gfs2: Fix memory leak of object lsi on error return path
authorColin Ian King <colin.king@canonical.com>
Mon, 12 Jul 2021 16:24:30 +0000 (17:24 +0100)
committerAndreas Gruenbacher <agruenba@redhat.com>
Tue, 20 Jul 2021 13:06:20 +0000 (15:06 +0200)
In the case where IS_ERR(lsi->si_sc_inode) is true the error exit path
to free_local does not kfree the allocated object lsi leading to a memory
leak. Fix this by kfree'ing lst before taking the error exit path.

Addresses-Coverity: ("Resource leak")
Fixes: 97fd734ba17e ("gfs2: lookup local statfs inodes prior to journal recovery")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
fs/gfs2/ops_fstype.c

index 5f4504dd0875ab80a7eb41b68fbdf93f1900fca1..bd3b3be1a473a102b77c2fdf4f77036c6153fc55 100644 (file)
@@ -677,6 +677,7 @@ static int init_statfs(struct gfs2_sbd *sdp)
                        error = PTR_ERR(lsi->si_sc_inode);
                        fs_err(sdp, "can't find local \"sc\" file#%u: %d\n",
                               jd->jd_jid, error);
+                       kfree(lsi);
                        goto free_local;
                }
                lsi->si_jid = jd->jd_jid;