linux-stable/fs/gfs2
Andreas Gruenbacher e19681ae6c gfs2: do_xmote fixes
[ Upstream commit 9947a06d29 ]

Function do_xmote() is called with the glock spinlock held.  Commit
86934198ee added a 'goto skip_inval' statement at the beginning of the
function to further below where the glock spinlock is expected not to be
held anymore.  Then it added code there that requires the glock spinlock
to be held.  This doesn't make sense; fix this up by dropping and
retaking the spinlock where needed.

In addition, when ->lm_lock() returned an error, do_xmote() didn't fail
the locking operation, and simply left the glock hanging; fix that as
well.  (This is a much older error.)

Fixes: 86934198ee ("gfs2: Clear flags when withdraw prevents xmote")
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-06-12 11:11:45 +02:00
..
acl.c gfs2: convert to ctime accessor functions 2023-07-24 10:29:59 +02:00
acl.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
aops.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
aops.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
bmap.c gfs2: Get rid of gfs2_alloc_blocks generation parameter 2024-06-12 11:11:44 +02:00
bmap.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
dentry.c Reinstate "GFS2: free disk inode which is deleted by remote node -V2" 2023-03-23 19:37:56 +01:00
dir.c gfs2: Get rid of gfs2_alloc_blocks generation parameter 2024-06-12 11:11:44 +02:00
dir.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
export.c Change calling conventions for filldir_t 2022-08-17 17:25:04 -04:00
file.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
gfs2.h
glock.c gfs2: do_xmote fixes 2024-06-12 11:11:45 +02:00
glock.h gfs2: Fix potential glock use-after-free on unmount 2024-06-12 11:11:44 +02:00
glops.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
glops.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
incore.h gfs2: Fix potential glock use-after-free on unmount 2024-06-12 11:11:44 +02:00
inode.c gfs2: Rename gfs2_lookup_{ simple => meta } 2024-06-12 11:11:44 +02:00
inode.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
Kconfig fs: add CONFIG_BUFFER_HEAD 2023-08-02 09:13:09 -06:00
lock_dlm.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
log.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
log.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
lops.c gfs2: Use mapping->gfp_mask for metadata inodes 2023-09-05 15:58:15 +02:00
lops.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
main.c gfs2: Rename "freeze_workqueue" to "gfs2_freeze" 2023-09-05 15:58:17 +02:00
Makefile
meta_io.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
meta_io.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
ops_fstype.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
quota.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
quota.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
recovery.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
recovery.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
rgrp.c gfs2: Get rid of gfs2_alloc_blocks generation parameter 2024-06-12 11:11:44 +02:00
rgrp.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
super.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
super.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
sys.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
sys.h
trace_gfs2.h gfs2: Remove 'first' trace_gfs2_promote argument 2021-10-25 08:42:19 +02:00
trans.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
trans.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00
util.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
util.h gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2024-06-12 11:11:45 +02:00
xattr.c gfs2: Get rid of gfs2_alloc_blocks generation parameter 2024-06-12 11:11:44 +02:00
xattr.h gfs2: No longer use 'extern' in function declarations 2024-06-12 11:11:44 +02:00