android_kernel_oneplus_msm8998/fs/udf
Jan Kara f57b4ae0b7 udf: Fix deadlock between writeback and udf_setsize()
commit f2e95355891153f66d4156bf3a142c6489cd78c6 upstream.

udf_setsize() called truncate_setsize() with i_data_sem held. Thus
truncate_pagecache() called from truncate_setsize() could lock a page
under i_data_sem which can deadlock as page lock ranks below
i_data_sem - e. g. writeback can hold page lock and try to acquire
i_data_sem to map a block.

Fix the problem by moving truncate_setsize() calls from under
i_data_sem. It is safe for us to change i_size without holding
i_data_sem as all the places that depend on i_size being stable already
hold inode_lock.

Fixes: 7e49b6f248
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-07-27 15:06:09 -07:00
..
balloc.c udf: use int for allocated blocks instead of sector_t 2015-03-16 08:24:16 +01:00
dir.c udf: Make udf_get_filename() return error instead of 0 length file name 2015-05-18 11:23:06 +02:00
directory.c udf: remove redundant buffer_head.h includes 2015-03-14 07:54:02 +01:00
ecma_167.h Remove struct typedefs from fs/udf/ecma_167.h et al. 2009-04-02 12:29:47 +02:00
file.c udf: remove double err declaration in udf_file_write_iter() 2015-05-18 11:23:09 +02:00
ialloc.c udf: saner calling conventions for udf_new_inode() 2014-09-04 21:37:41 +02:00
inode.c udf: Fix deadlock between writeback and udf_setsize() 2017-07-27 15:06:09 -07:00
Kconfig udf: Update Kconfig description 2015-01-05 11:04:37 +01:00
lowlevel.c udf: use linux/uaccess.h 2014-07-15 22:40:23 +02:00
Makefile switch udf to simple_fsync() 2009-06-11 21:36:13 -04:00
misc.c udf: remove redundant buffer_head.h includes 2015-03-14 07:54:02 +01:00
namei.c UDF: support NFSv2 export 2015-05-18 11:23:08 +02:00
osta_udf.h Remove struct typedefs from fs/udf/ecma_167.h et al. 2009-04-02 12:29:47 +02:00
partition.c udf: remove redundant buffer_head.h includes 2015-03-14 07:54:02 +01:00
super.c udf: Don't modify filesystem for read-only mounts 2015-08-20 14:58:35 +02:00
symlink.c udf: Return -ENOMEM when allocation fails in udf_get_filename() 2015-05-18 11:23:03 +02:00
truncate.c udf: remove redundant buffer_head.h includes 2015-03-14 07:54:02 +01:00
udf_i.h fs: cleanup slight list_entry abuse 2015-06-23 18:01:59 -04:00
udf_sb.h udf: Fortify LVID loading 2013-09-24 11:23:33 +02:00
udfdecl.h udf: Check path length when reading symlink 2014-12-19 14:12:08 +01:00
udfend.h Remove struct typedefs from fs/udf/ecma_167.h et al. 2009-04-02 12:29:47 +02:00
udftime.c udf: remove redundant sys_tz declaration 2014-09-29 13:45:12 +02:00
unicode.c udf: Check output buffer length when converting name to CS0 2016-02-25 12:01:18 -08:00