linux/fs/gfs2
Andrew Price da728507b0 gfs2: Don't clear sb->s_fs_info in gfs2_sys_fs_add
commit 9126d2754c upstream.

When gfs2_sys_fs_add() fails, it sets sb->s_fs_info to NULL on its error
path (see commit 0d515210b6 ("GFS2: Add kobject release method")).
The intention seems to be to prevent dereferencing sb->s_fs_info once
the object pointed to has been deallocated, but that would be better
achieved by setting the pointer to NULL in free_sbd().

As a consequence, when the call to gfs2_sys_fs_add() fails in
gfs2_fill_super(), sdp = GFS2_SB(inode) will evaluate to NULL in iput()
-> gfs2_drop_inode(), and accessing sdp->sd_flags will be a NULL pointer
dereference.

Fix that by only setting sb->s_fs_info to NULL when actually freeing the
object pointed to in free_sbd().

Fixes: ae9f3bd825 ("gfs2: replace sd_aspace with sd_inode")
Reported-by: syzbot+b12826218502df019f9d@syzkaller.appspotmail.com
Signed-off-by: Andrew Price <anprice@redhat.com>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-06-19 15:32:37 +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 2023-11-06 01:51:26 +01:00
aops.c gfs2: Remove gfs2_jdata_writepage() 2024-09-02 14:46:33 +02:00
aops.h gfs2: No longer use 'extern' in function declarations 2023-11-06 01:51:26 +01:00
bmap.c gfs2 updates 2024-05-14 17:35:22 -07:00
bmap.h gfs2: No longer use 'extern' in function declarations 2023-11-06 01:51:26 +01:00
dentry.c Revert "gfs2: Use GL_NOBLOCK flag for non-blocking lookups" 2024-02-02 17:21:44 +01:00
dir.c gfs2: Improve gfs2_consist_inode() usage 2024-04-09 18:35:57 +02:00
dir.h gfs2: No longer use 'extern' in function declarations 2023-11-06 01:51:26 +01:00
export.c dlm for 6.8 2024-01-10 10:17:23 -08:00
file.c gfs2: Truncate address space when flipping GFS2_DIF_JDATA flag 2025-02-01 18:39:37 +01:00
gfs2.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00
glock.c gfs2: replace sd_aspace with sd_inode 2025-06-19 15:31:26 +02:00
glock.h gfs2: Fix unlinked inode cleanup 2024-12-05 14:02:18 +01:00
glops.c gfs2: replace sd_aspace with sd_inode 2025-06-19 15:31:26 +02:00
glops.h gfs2: No longer use 'extern' in function declarations 2023-11-06 01:51:26 +01:00
incore.h gfs2: replace sd_aspace with sd_inode 2025-06-19 15:31:26 +02:00
inode.c gfs2: gfs2_create_inode error handling fix 2025-06-19 15:31:26 +02:00
inode.h gfs2: No longer use 'extern' in function declarations 2023-11-06 01:51:26 +01:00
Kconfig fs: add CONFIG_BUFFER_HEAD 2023-08-02 09:13:09 -06:00
lock_dlm.c gfs2: Invert the GLF_INITIAL flag 2024-05-29 15:34:55 +02:00
log.c gfs2: Remove __gfs2_writepage() 2024-09-02 14:46:29 +02:00
log.h gfs2: No longer use 'extern' in function declarations 2023-11-06 01:51:26 +01:00
lops.c gfs2: Remove use of error flag in journal reads 2023-12-20 21:29:41 +01:00
lops.h gfs2: No longer use 'extern' in function declarations 2023-11-06 01:51:26 +01:00
main.c mm, slab: remove last vestiges of SLAB_MEM_SPREAD 2024-03-12 20:32:19 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
meta_io.c gfs2: replace sd_aspace with sd_inode 2025-06-19 15:31:26 +02:00
meta_io.h gfs2: replace sd_aspace with sd_inode 2025-06-19 15:31:26 +02:00
ops_fstype.c gfs2: Don't clear sb->s_fs_info in gfs2_sys_fs_add 2025-06-19 15:32:37 +02:00
quota.c gfs2: Revert "check for no eligible quota changes" 2024-06-20 16:38:15 +02:00
quota.h gfs2 fixes 2023-11-07 11:54:17 -08:00
recovery.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2023-12-20 21:29:40 +01:00
recovery.h gfs2: No longer use 'extern' in function declarations 2023-11-06 01:51:26 +01:00
rgrp.c gfs2: Fix unlinked inode cleanup 2024-12-05 14:02:18 +01:00
rgrp.h gfs2: No longer use 'extern' in function declarations 2023-11-06 01:51:26 +01:00
super.c gfs2: pass through holder from the VFS for freeze/thaw 2025-06-19 15:32:32 +02:00
super.h gfs2 fixes 2023-11-07 11:54:17 -08:00
sys.c gfs2: Don't clear sb->s_fs_info in gfs2_sys_fs_add 2025-06-19 15:32:37 +02:00
sys.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 398 2019-06-05 17:37:12 +02:00
trace_gfs2.h gfs2: Invert the GLF_INITIAL flag 2024-05-29 15:34:55 +02:00
trans.c gfs2: Rename gfs2_withdrawn to gfs2_withdrawing_or_withdrawn 2023-12-20 21:29:40 +01:00
trans.h gfs2: No longer use 'extern' in function declarations 2023-11-06 01:51:26 +01:00
util.c gfs2: Revert "Add quota_change type" 2024-06-08 02:35:09 +02:00
util.h gfs2: gfs2_freeze_unlock cleanup 2024-04-29 12:35:15 +02:00
xattr.c gfs2: Improve gfs2_consist_inode() usage 2024-04-09 18:35:57 +02:00
xattr.h gfs2: No longer use 'extern' in function declarations 2023-11-06 01:51:26 +01:00