linux-stable/fs/udf
Al Viro f440ea85d4 do d_instantiate/unlock_new_inode combinations safely
commit 1e2e547a93 upstream.

For anything NFS-exported we do _not_ want to unlock new inode
before it has grown an alias; original set of fixes got the
ordering right, but missed the nasty complication in case of
lockdep being enabled - unlock_new_inode() does
	lockdep_annotate_inode_mutex_key(inode)
which can only be done before anyone gets a chance to touch
->i_mutex.  Unfortunately, flipping the order and doing
unlock_new_inode() before d_instantiate() opens a window when
mkdir can race with open-by-fhandle on a guessed fhandle, leading
to multiple aliases for a directory inode and all the breakage
that follows from that.

	Correct solution: a new primitive (d_instantiate_new())
combining these two in the right order - lockdep annotate, then
d_instantiate(), then the rest of unlock_new_inode().  All
combinations of d_instantiate() with unlock_new_inode() should
be converted to that.

Cc: stable@kernel.org	# 2.6.29 and later
Tested-by: Mike Marshall <hubcap@omnibond.com>
Reviewed-by: Andreas Dilger <adilger@dilger.ca>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-05-30 07:51:47 +02:00
..
balloc.c udf: Factor out code for creating indirect extent 2015-12-23 18:04:52 +01:00
dir.c block,fs: untangle fs.h and blk_types.h 2016-11-01 09:43:26 -06:00
directory.c block,fs: untangle fs.h and blk_types.h 2016-11-01 09:43:26 -06:00
ecma_167.h udf: use __packed instead of __attribute__ ((packed)) 2017-01-10 11:29:11 +01:00
file.c udf: Use i_size_read() in udf_adinicb_writepage() 2017-06-14 11:21:01 +02:00
ialloc.c fs: Replace current_fs_time() with current_time() 2016-09-27 21:06:22 -04:00
inode.c fs-udf: Delete an error message for a failed memory allocation in two functions 2017-08-16 16:43:23 +02:00
Kconfig udf: Update Kconfig description 2015-01-05 11:04:37 +01:00
lowlevel.c udf: atomically read inode size 2017-01-10 11:57:34 +01:00
Makefile
misc.c udf: remove empty condition 2017-01-10 11:37:31 +01:00
namei.c do d_instantiate/unlock_new_inode combinations safely 2018-05-30 07:51:47 +02:00
osta_udf.h udf: use __packed instead of __attribute__ ((packed)) 2017-01-10 11:29:11 +01:00
partition.c udf: Use correct partition reference number for metadata 2016-05-19 13:00:35 +02:00
super.c udf: Avoid overflow when session starts at large offset 2017-12-20 10:10:36 +01:00
symlink.c statx: Add a system call to make enhanced file info available 2017-03-02 20:51:15 -05:00
truncate.c udf: remove redundant buffer_head.h includes 2015-03-14 07:54:02 +01:00
udf_i.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
udf_sb.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
udfdecl.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
udfend.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
udftime.c udf: Convert udf_disk_stamp_to_time() to use mktime64() 2017-06-14 11:21:02 +02:00
unicode.c udf: Fix leak of UTF-16 surrogates into encoded strings 2018-04-24 09:36:38 +02:00