summaryrefslogtreecommitdiffstats
path: root/kernel/reboot.c
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2017-04-05 14:17:30 +0200
committerJan Kara <jack@suse.cz>2017-04-05 14:24:55 +0200
commit1e0e653f1136a413a9969e5d0d548ee6499b9763 (patch)
treea3e413e0affd13b0906dafa495501ee70216106d /kernel/reboot.c
parentreiserfs: Make cancel_old_flush() reliable (diff)
downloadlinux-1e0e653f1136a413a9969e5d0d548ee6499b9763.tar.xz
linux-1e0e653f1136a413a9969e5d0d548ee6499b9763.zip
reiserfs: Protect dquot_writeback_dquots() by s_umount semaphore
dquot_writeback_dquots() expects s_umount semaphore to be held to protect it from other concurrent quota operations. reiserfs_sync_fs() can call dquot_writeback_dquots() without holding s_umount semaphore when called from flush_old_commits(). Fix the problem by grabbing s_umount in flush_old_commits(). However we have to be careful and use only trylock since reiserfs_cancel_old_sync() can be waiting for flush_old_commits() to complete while holding s_umount semaphore. Possible postponing of sync work is not a big deal though as that is only an opportunistic flush. Fixes: 9d1ccbe70e0b14545caad12dc73adb3605447df0 Reported-by: Jan Beulich <jbeulich@suse.com> Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'kernel/reboot.c')
0 files changed, 0 insertions, 0 deletions