]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commit - fs/gfs2/inode.c
gfs2: clean up iopen glock mess in gfs2_create_inode
authorBob Peterson <rpeterso@redhat.com>
Tue, 19 Nov 2019 16:40:46 +0000 (11:40 -0500)
committerAndreas Gruenbacher <agruenba@redhat.com>
Tue, 19 Nov 2019 20:02:01 +0000 (21:02 +0100)
commit2c47c1be51fbded1f7baa2ceaed90f97932f79be
treedd4a9ef55e8788f8ca113ec03aca7d0a34d78870
parentd99724c3c36ae73ed3908f5e3f2d103a48cd9ad0
gfs2: clean up iopen glock mess in gfs2_create_inode

Before this patch, gfs2_create_inode had a use-after-free for the
iopen glock in some error paths because it did this:

gfs2_glock_put(io_gl);
fail_gunlock2:
if (io_gl)
clear_bit(GLF_INODE_CREATING, &io_gl->gl_flags);

In some cases, the io_gl was used for create and only had one
reference, so the glock might be freed before the clear_bit().
This patch tries to straighten it out by only jumping to the
error paths where iopen is properly set, and moving the
gfs2_glock_put after the clear_bit.

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