]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
gfs2: Add missing truncate_inode_pages_final for sd_aspace
authorBob Peterson <rpeterso@redhat.com>
Tue, 27 Oct 2020 15:10:02 +0000 (10:10 -0500)
committerStefan Bader <stefan.bader@canonical.com>
Thu, 10 Dec 2020 11:06:19 +0000 (12:06 +0100)
BugLink: https://bugs.launchpad.net/bugs/1905618
[ Upstream commit a9dd945ccef07a904e412f208f8de708a3d7159e ]

Gfs2 creates an address space for its rgrps called sd_aspace, but it never
called truncate_inode_pages_final on it. This confused vfs greatly which
tried to reference the address space after gfs2 had freed the superblock
that contained it.

This patch adds a call to truncate_inode_pages_final for sd_aspace, thus
avoiding the use-after-free.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
fs/gfs2/super.c

index 5935ce5ae563617a4dad8950d6e5b54381692423..50c925d9c610341da77ba5dbbf7f09aed75f4092 100644 (file)
@@ -689,6 +689,7 @@ restart:
        gfs2_jindex_free(sdp);
        /*  Take apart glock structures and buffer lists  */
        gfs2_gl_hash_clear(sdp);
+       truncate_inode_pages_final(&sdp->sd_aspace);
        gfs2_delete_debugfs_file(sdp);
        /*  Unmount the locking protocol  */
        gfs2_lm_unmount(sdp);