mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
xfs: release dquot buffer after dqflush failure
xfs_qm_dqpurge() gets a locked buffer from xfs_dquot_use_attached_buf().
If xfs_qm_dqflush() fails, the error path skips xfs_buf_relse() and then
calls xfs_dquot_detach_buf(), which tries to lock the same buffer again.
Release the buffer after xfs_qm_dqflush() returns so the error path drops
the caller hold and unlocks the buffer before the dquot is detached,
matching the other dqflush callers.
Fixes: a40fe30868 ("xfs: separate dquot buffer reads from xfs_dqflush")
Cc: stable@vger.kernel.org # v6.13+
Signed-off-by: Yingjie Gao <gaoyingjie@uniontech.com>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
parent
0b434b552e
commit
0c1b3a823a
|
|
@ -166,10 +166,9 @@ xfs_qm_dqpurge(
|
|||
* does it on success.
|
||||
*/
|
||||
error = xfs_qm_dqflush(dqp, bp);
|
||||
if (!error) {
|
||||
if (!error)
|
||||
error = xfs_bwrite(bp);
|
||||
xfs_buf_relse(bp);
|
||||
}
|
||||
xfs_buf_relse(bp);
|
||||
xfs_dqflock(dqp);
|
||||
}
|
||||
xfs_dquot_detach_buf(dqp);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user