]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ext4: fix possible null-ptr-deref in extents_kunit_exit()
authorYe Bin <yebin10@huawei.com>
Mon, 30 Mar 2026 13:30:34 +0000 (21:30 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 10 Apr 2026 02:04:32 +0000 (22:04 -0400)
There's issue as follows:
KASAN: null-ptr-deref in range [0x00000000000002c0-0x00000000000002c7]
Tainted: [E]=UNSIGNED_MODULE, [N]=TEST
RIP: 0010:extents_kunit_exit+0x2e/0xc0 [ext4_test]
Call Trace:
 <TASK>
 kunit_try_run_case_cleanup+0xbc/0x100 [kunit]
 kunit_generic_run_threadfn_adapter+0x89/0x100 [kunit]
 kthread+0x408/0x540
 ret_from_fork+0xa76/0xdf0
 ret_from_fork_asm+0x1a/0x30

Above issue happens as extents_kunit_init() init testcase failed.
So test if testcase is inited success.

Fixes: cb1e0c1d1fad ("ext4: kunit tests for extent splitting and conversion")
Signed-off-by: Ye Bin <yebin10@huawei.com>
Reviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Link: https://patch.msgid.link/20260330133035.287842-5-yebin@huaweicloud.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/extents-test.c

index 4042bc8a95e2f62f0da13236a0c1970e2e00511e..6b53a3f39fcd69519d43753a8e92677cba7599e7 100644 (file)
@@ -142,9 +142,12 @@ static struct file_system_type ext_fs_type = {
 
 static void extents_kunit_exit(struct kunit *test)
 {
-       struct super_block *sb = k_ctx.k_ei->vfs_inode.i_sb;
-       struct ext4_sb_info *sbi = sb->s_fs_info;
+       struct ext4_sb_info *sbi;
 
+       if (!k_ctx.k_ei)
+               return;
+
+       sbi = k_ctx.k_ei->vfs_inode.i_sb->s_fs_info;
        ext4_es_unregister_shrinker(sbi);
        deactivate_super(sbi->s_sb);
        kfree(sbi);