f2fs: fix potential deadlock due to unpaired node_write lock use
authorChao Yu <chao@kernel.org>
Sun, 14 May 2023 08:07:23 +0000 (16:07 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 12 Jun 2023 20:04:07 +0000 (13:04 -0700)
commitf082c6b205a06953f26c40bdc7621cc5a58ceb7c
tree6f30d70a6dab8be29ad65f98d66ef4823aa3ad87
parent36ded4c106db2434754c9bdcabdbdb52117be35f
f2fs: fix potential deadlock due to unpaired node_write lock use

If S_NOQUOTA is cleared from inode during data page writeback of quota
file, it may miss to unlock node_write lock, result in potential
deadlock, fix to use the lock in paired.

Kworker Thread
- writepage
 if (IS_NOQUOTA())
   f2fs_down_read(&sbi->node_write);
- vfs_cleanup_quota_inode
 - inode->i_flags &= ~S_NOQUOTA;
 if (IS_NOQUOTA())
   f2fs_up_read(&sbi->node_write);

Fixes: 79963d967b49 ("f2fs: shrink node_write lock coverage")
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/compress.c
fs/f2fs/data.c