]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
gfs2: Fix deadlock between gfs2_{create_inode,inode_lookup} and delete_work_func
authorAndreas Gruenbacher <agruenba@redhat.com>
Mon, 30 Nov 2020 15:07:25 +0000 (16:07 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 11 Dec 2020 12:22:07 +0000 (13:22 +0100)
commit651b1f3cee421367ca3827cdf50d364cbb10bad0
tree770e504a99ea4de178148296d7cf9c022e3d2c5b
parent8a208228d2796abb1c38d7cecb7fd485107d751d
gfs2: Fix deadlock between gfs2_{create_inode,inode_lookup} and delete_work_func

commit dd0ecf544125639e54056d851e4887dbb94b6d2f upstream.

In gfs2_create_inode and gfs2_inode_lookup, make sure to cancel any pending
delete work before taking the inode glock.  Otherwise, gfs2_cancel_delete_work
may block waiting for delete_work_func to complete, and delete_work_func may
block trying to acquire the inode glock in gfs2_inode_lookup.

Reported-by: Alexander Aring <aahringo@redhat.com>
Fixes: a0e3cc65fa29 ("gfs2: Turn gl_delete into a delayed work")
Cc: stable@vger.kernel.org # v5.8+
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/gfs2/inode.c