quota: add missing use of dq_data_lock in __dquot_initialize
The bulk of __dquot_initialize runs under the dqptr_sem which protects the inode->i_dquot pointers. It doesn't protect the dereferenced contents, though. Those are protected by the dq_data_lock, which is missing around the dquot_resv_space call. Signed-off-by: Jeff Mahoney <jeffm@suse.com> Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
f6161aa153
commit
68ac8bfb6a
1 changed files with 4 additions and 1 deletions
|
@ -1439,8 +1439,11 @@ static void __dquot_initialize(struct inode *inode, int type)
|
|||
* did a write before quota was turned on
|
||||
*/
|
||||
rsv = inode_get_rsv_space(inode);
|
||||
if (unlikely(rsv))
|
||||
if (unlikely(rsv)) {
|
||||
spin_lock(&dq_data_lock);
|
||||
dquot_resv_space(inode->i_dquot[cnt], rsv);
|
||||
spin_unlock(&dq_data_lock);
|
||||
}
|
||||
}
|
||||
}
|
||||
out_err:
|
||||
|
|
Loading…
Reference in a new issue