f2fs: Fix deadlock in shutdown ioctl
PATCH v3 1/1 f2fs: Fix deadlock in shutdown ioctl
f2fs_ioc_shutdown() ioctl gets stuck in the below path when issued with F2FS_GOING_DOWN_FULLSYNC option.
__switch_to+0x90/0xc4 percpu_down_write+0x8c/0xc0 freeze_super+0xec/0x1e4 freeze_bdev+0xc4/0xcc f2fs_ioctl+0xc0c/0x1ce0 f2fs_compat_ioctl+0x98/0x1f0
Signed-off-by Sahitya Tummala <[email protected]>
--- fs/f2fs/file.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
fs/f2fs/file.c +7 -4
@@ -1851,9 +1851,11 @@ static int f2fs_ioc_shutdown(struct file *filp, unsigned long arg)if (get_user (in, (__u32 __user *)arg))return -EFAULT ; - ret =mnt_want_write_file (filp); -if (ret) -return ret; +if (in !=F2FS_GOING_DOWN_FULLSYNC ) { + ret =mnt_want_write_file (filp); +if (ret) +return ret; + }switch (in) {case F2FS_GOING_DOWN_FULLSYNC :
@@ -1894,7 +1896,8 @@ static int f2fs_ioc_shutdown(struct file *filp, unsigned long arg)f2fs_update_time (sbi,REQ_TIME ); out: -mnt_drop_write_file (filp); +if (in !=F2FS_GOING_DOWN_FULLSYNC ) +mnt_drop_write_file (filp);return ret; }
Signature · 2 lines
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc. Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.
Quoted 11 lines · Sahitya Tummala
f2fs_ioc_shutdown()ioctl gets stuck in the below path when issued withF2FS_GOING_DOWN_FULLSYNCoption.__switch_to+0x90/0xc4 percpu_down_write+0x8c/0xc0 freeze_super+0xec/0x1e4 freeze_bdev+0xc4/0xcc f2fs_ioctl+0xc0c/0x1ce0 f2fs_compat_ioctl+0x98/0x1f0Signed-off-by Sahitya Tummala <[email protected]>
Reviewed-by Chao Yu <[email protected]>
Thanks,