gfs2: fix an oops in gfs2_permission
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 2 Oct 2023 02:33:44 +0000 (03:33 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 28 Nov 2023 17:19:47 +0000 (17:19 +0000)
commit7f9b5e974cbb500ea88643b385913ab41cc6560b
treec8ad439afa528d4616fe8dd2bb7604eabb51275e
parent119565e566f91ff3588ffcd5812f0c8061586c6b
gfs2: fix an oops in gfs2_permission

[ Upstream commit 0abd1557e21c617bd13fc18f7725fc6363c05913 ]

In RCU mode, we might race with gfs2_evict_inode(), which zeroes
->i_gl.  Freeing of the object it points to is RCU-delayed, so
if we manage to fetch the pointer before it's been replaced with
NULL, we are fine.  Check if we'd fetched NULL and treat that
as "bail out and tell the caller to get out of RCU mode".

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/gfs2/inode.c
fs/gfs2/super.c