summaryrefslogtreecommitdiff
path: root/kernel/rtmutex-debug.c
diff options
context:
space:
mode:
authorJiaying Zhang <jiayingz@google.com>2009-07-07 16:15:21 (GMT)
committerJan Kara <jack@suse.cz>2009-07-07 16:15:21 (GMT)
commitd01730d74d2b0155da50d44555001706294014f7 (patch)
treea6de6075c054b6f253be19062d7f8efc973d55dc /kernel/rtmutex-debug.c
parentfaf80d62e44dc627efb741f48db50c1858d1667c (diff)
downloadlinux-fsl-qoriq-d01730d74d2b0155da50d44555001706294014f7.tar.xz
quota: Fix possible deadlock during parallel quotaon and quotaoff
The following test script triggers a deadlock on ext2 filesystem: while true; do quotaon /dev/hda >&/dev/null; usleep $RANDOM; done & while true; do quotaoff /dev/hda >&/dev/null; usleep $RANDOM; done & I found there is a potential deadlock between quotaon and quotaoff (or quotasync). Basically, all of quotactl operations need to be protected by dqonoff_mutex. vfs_quota_off and vfs_quota_sync also call sb->s_op->quota_write that needs to grab the i_mutex of the quota file. But in vfs_quota_on_inode (called from quotaon operation), the current code tries to grab the i_mutex of the quota file first before getting quonoff_mutex. Reverse the order in which we take locks in vfs_quota_on_inode(). Jan Kara: Changed changelog to be more readable, made lockdep happy with I_MUTEX_QUOTA. Signed-off-by: Jiaying Zhang <jiayingz@google.com> Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'kernel/rtmutex-debug.c')
0 files changed, 0 insertions, 0 deletions