alistair23-linux/fs/f2fs
Chao Yu 21020812c9 f2fs: fix lock dependency in between dio_rwsem & i_mmap_sem
test/generic/208 reports a potential deadlock as below:

Chain exists of:
  &mm->mmap_sem --> &fi->i_mmap_sem --> &fi->dio_rwsem[WRITE]

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&fi->dio_rwsem[WRITE]);
                               lock(&fi->i_mmap_sem);
                               lock(&fi->dio_rwsem[WRITE]);
  lock(&mm->mmap_sem);

This patch changes the lock dependency as below in fallocate() to
fix this issue:
- dio_rwsem
 - i_mmap_sem

Fixes: bb06664a53 ("f2fs: avoid race in between GC and block exchange")
Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2018-01-02 19:27:28 -08:00
..
acl.c f2fs: stop all the operations by cp_error flag 2017-11-05 16:41:43 -08:00
acl.h
checkpoint.c Rename superblock flags (MS_xyz -> SB_xyz) 2017-11-27 13:05:09 -08:00
data.c f2fs: still write data if preallocate only partial blocks 2018-01-02 19:27:27 -08:00
debug.c f2fs: remove unneeded memory footprint accounting 2018-01-02 19:27:27 -08:00
dir.c f2fs: introduce sysfs readdir_ra to readahead inode block in readdir 2018-01-02 19:27:27 -08:00
extent_cache.c f2fs: fix a bug caused by NULL extent tree 2017-05-23 21:07:18 -07:00
f2fs.h f2fs: remove unused parameter 2018-01-02 19:27:27 -08:00
file.c f2fs: fix lock dependency in between dio_rwsem & i_mmap_sem 2018-01-02 19:27:28 -08:00
gc.c Rename superblock flags (MS_xyz -> SB_xyz) 2017-11-27 13:05:09 -08:00
gc.h f2fs: fix potential overflow when adjusting GC cycle 2017-08-15 10:40:14 -07:00
hash.c f2fs: check entire encrypted bigname when finding a dentry 2017-05-04 11:44:35 -04:00
inline.c f2fs: enhance multiple device flush 2017-10-10 12:49:53 -07:00
inode.c f2fs-for-4.15-rc1 2017-11-16 12:10:21 -08:00
Kconfig
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
namei.c f2fs: support flexible inline xattr size 2017-11-05 16:41:50 -08:00
node.c f2fs: remove unused parameter 2018-01-02 19:27:27 -08:00
node.h f2fs: limit # of inmemory pages 2017-10-26 10:44:21 +02:00
recovery.c f2fs: remove unused parameter 2018-01-02 19:27:27 -08:00
segment.c f2fs: apply write hints to select the type of segments for buffered write 2017-11-09 10:18:16 -08:00
segment.h f2fs: check curseg space before foreground GC 2017-11-05 16:42:04 -08:00
shrinker.c f2fs: obsolete ALLOC_NID_LIST list 2017-10-10 12:49:53 -07:00
super.c f2fs: reserve nid resource for quota sysfile 2018-01-02 19:27:26 -08:00
sysfs.c f2fs: introduce sysfs readdir_ra to readahead inode block in readdir 2018-01-02 19:27:27 -08:00
trace.c f2fs: use set_page_private marcro in f2fs_trace_pid 2017-03-24 15:10:49 -04:00
trace.h
xattr.c f2fs: handle error case when adding xattr entry 2017-11-05 16:41:51 -08:00
xattr.h f2fs: guard macro variables with braces 2017-04-10 19:48:10 -07:00