diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ocfs2/quota_local.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/ocfs2/quota_local.c b/fs/ocfs2/quota_local.c index 07deec5e9721..71cf410e89f0 100644 --- a/fs/ocfs2/quota_local.c +++ b/fs/ocfs2/quota_local.c | |||
@@ -655,6 +655,9 @@ static int ocfs2_local_read_info(struct super_block *sb, int type) | |||
655 | struct ocfs2_quota_recovery *rec; | 655 | struct ocfs2_quota_recovery *rec; |
656 | int locked = 0; | 656 | int locked = 0; |
657 | 657 | ||
658 | /* We don't need the lock and we have to acquire quota file locks | ||
659 | * which will later depend on this lock */ | ||
660 | mutex_unlock(&sb_dqopt(sb)->dqio_mutex); | ||
658 | info->dqi_maxblimit = 0x7fffffffffffffffLL; | 661 | info->dqi_maxblimit = 0x7fffffffffffffffLL; |
659 | info->dqi_maxilimit = 0x7fffffffffffffffLL; | 662 | info->dqi_maxilimit = 0x7fffffffffffffffLL; |
660 | oinfo = kmalloc(sizeof(struct ocfs2_mem_dqinfo), GFP_NOFS); | 663 | oinfo = kmalloc(sizeof(struct ocfs2_mem_dqinfo), GFP_NOFS); |
@@ -733,6 +736,7 @@ static int ocfs2_local_read_info(struct super_block *sb, int type) | |||
733 | goto out_err; | 736 | goto out_err; |
734 | } | 737 | } |
735 | 738 | ||
739 | mutex_lock(&sb_dqopt(sb)->dqio_mutex); | ||
736 | return 0; | 740 | return 0; |
737 | out_err: | 741 | out_err: |
738 | if (oinfo) { | 742 | if (oinfo) { |
@@ -746,6 +750,7 @@ out_err: | |||
746 | kfree(oinfo); | 750 | kfree(oinfo); |
747 | } | 751 | } |
748 | brelse(bh); | 752 | brelse(bh); |
753 | mutex_lock(&sb_dqopt(sb)->dqio_mutex); | ||
749 | return -1; | 754 | return -1; |
750 | } | 755 | } |
751 | 756 | ||