]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfs: don't leak a locked dquot when xfs_dquot_attach_buf fails
authorChristoph Hellwig <hch@lst.de>
Mon, 10 Nov 2025 13:22:53 +0000 (14:22 +0100)
committerCarlos Maiolino <cem@kernel.org>
Tue, 11 Nov 2025 10:45:22 +0000 (11:45 +0100)
xfs_qm_quotacheck_dqadjust acquired the dquot through xfs_qm_dqget,
which means it owns a reference and holds q_qlock.  Both need to
be dropped on an error exit.

Cc: <stable@vger.kernel.org> # v6.13
Fixes: ca378189fdfa ("xfs: convert quotacheck to attach dquot buffers")
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
fs/xfs/xfs_qm.c

index 23ba84ec919a4d2fcb0a995f1dff5095fad971bf..18a19947bbdbac1d0eb0676595d2bf3cc352bfaf 100644 (file)
@@ -1318,7 +1318,7 @@ xfs_qm_quotacheck_dqadjust(
 
        error = xfs_dquot_attach_buf(NULL, dqp);
        if (error)
-               return error;
+               goto out_unlock;
 
        trace_xfs_dqadjust(dqp);
 
@@ -1348,8 +1348,9 @@ xfs_qm_quotacheck_dqadjust(
        }
 
        dqp->q_flags |= XFS_DQFLAG_DIRTY;
+out_unlock:
        xfs_qm_dqput(dqp);
-       return 0;
+       return error;
 }
 
 /*