From bcb1385096caf421363d47e735acda940cb1e12b Mon Sep 17 00:00:00 2001 From: Jan Kara Date: Tue, 9 Apr 2013 09:21:41 -0400 Subject: ext4: fix deadlock with quota feature We didn't mark hidden quota files with S_NOQUOTA flag and thus quota was accounted even for quota files. Thus we could recurse back to quota code when adding new blocks to quota file which can easily deadlock. Mark hidden quota files properly. Signed-off-by: Jan Kara Signed-off-by: "Theodore Ts'o" --- fs/ext4/super.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'fs/ext4/super.c') diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 525beb6e3e1e..968ca9369175 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -4953,6 +4953,8 @@ static int ext4_quota_enable(struct super_block *sb, int type, int format_id, return PTR_ERR(qf_inode); } + /* Don't account quota for quota files to avoid recursion */ + qf_inode->i_flags |= S_NOQUOTA; err = dquot_enable(qf_inode, type, format_id, flags); iput(qf_inode); -- cgit v1.2.3