gfs2: Fix gfs2_qa_get imbalance in gfs2_quota_hold
authorBob Peterson <rpeterso@redhat.com>
Mon, 15 May 2023 16:37:57 +0000 (11:37 -0500)
committerAndreas Gruenbacher <agruenba@redhat.com>
Tue, 6 Jun 2023 16:35:06 +0000 (18:35 +0200)
This patch fixes a case in which function gfs2_quota_hold encounters an
assert error and exits. The lack of gfs2_qa_put causes further problems
when the inode is evicted and the get/put count is non-zero.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/quota.c

index 1ed17226d9ede985565357b514d32084da890972..386ca770ce2ea06c67dddf5f428baf9c2d53ca82 100644 (file)
@@ -591,6 +591,7 @@ int gfs2_quota_hold(struct gfs2_inode *ip, kuid_t uid, kgid_t gid)
        if (gfs2_assert_warn(sdp, !ip->i_qadata->qa_qd_num) ||
            gfs2_assert_warn(sdp, !test_bit(GIF_QD_LOCKED, &ip->i_flags))) {
                error = -EIO;
+               gfs2_qa_put(ip);
                goto out;
        }