]> git.baikalelectronics.ru Git - kernel.git/commit
f2fs: fix lock dependency in between dio_rwsem & i_mmap_sem
authorChao Yu <yuchao0@huawei.com>
Thu, 23 Nov 2017 15:26:52 +0000 (23:26 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 3 Jan 2018 03:27:28 +0000 (19:27 -0800)
commitc87a1fe0d606b6317f8c13fe27270a1659d43a7a
tree753b5e94c5b00ca74dc64d370b259f88070e2e05
parentbe2297fc413d6965dc0aa8a8123c2846b0736bcd
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: 639589e77f41 ("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>
fs/f2fs/file.c