linux-stable/fs/jfs
Zixuan Fu 9d3fec8ab6 fs: jfs: fix possible NULL pointer dereference in dbFree()
[ Upstream commit 0d4837fdb7 ]

In our fault-injection testing, the variable "nblocks" in dbFree() can be
zero when kmalloc_array() fails in dtSearch(). In this case, the variable
 "mp" in dbFree() would be NULL and then it is dereferenced in
"write_metapage(mp)".

The failure log is listed as follows:

[   13.824137] BUG: kernel NULL pointer dereference, address: 0000000000000020
...
[   13.827416] RIP: 0010:dbFree+0x5f7/0x910 [jfs]
[   13.834341] Call Trace:
[   13.834540]  <TASK>
[   13.834713]  txFreeMap+0x7b4/0xb10 [jfs]
[   13.835038]  txUpdateMap+0x311/0x650 [jfs]
[   13.835375]  jfs_lazycommit+0x5f2/0xc70 [jfs]
[   13.835726]  ? sched_dynamic_update+0x1b0/0x1b0
[   13.836092]  kthread+0x3c2/0x4a0
[   13.836355]  ? txLockFree+0x160/0x160 [jfs]
[   13.836763]  ? kthread_unuse_mm+0x160/0x160
[   13.837106]  ret_from_fork+0x1f/0x30
[   13.837402]  </TASK>
...

This patch adds a NULL check of "mp" before "write_metapage(mp)" is called.

Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
Signed-off-by: Zixuan Fu <r33s3n6@gmail.com>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-06-09 10:29:49 +02:00
..
Kconfig
Makefile
acl.c vfs: add rcu argument to ->get_acl() callback 2021-08-18 22:08:24 +02:00
file.c jfs: convert to fileattr 2021-04-12 15:04:29 +02:00
inode.c A couple bug fixes 2022-03-29 18:17:30 -07:00
ioctl.c jfs: convert to fileattr 2021-04-12 15:04:29 +02:00
jfs_acl.h vfs: add rcu argument to ->get_acl() callback 2021-08-18 22:08:24 +02:00
jfs_btree.h
jfs_debug.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
jfs_debug.h
jfs_dinode.h jfs: Avoid field-overflowing memcpy() 2021-06-23 09:21:52 -05:00
jfs_discard.c
jfs_discard.h
jfs_dmap.c fs: jfs: fix possible NULL pointer dereference in dbFree() 2022-06-09 10:29:49 +02:00
jfs_dmap.h jfs: Fix array index bounds check in dbAdjTree 2020-11-13 16:03:07 -06:00
jfs_dtree.c jfs: Replace zero-length array with flexible-array member 2020-03-09 15:18:51 -05:00
jfs_dtree.h
jfs_extent.c jfs: delete duplicated words + other fixes 2020-11-13 13:36:00 -06:00
jfs_extent.h jfs: delete duplicated words + other fixes 2020-11-13 13:36:00 -06:00
jfs_filsys.h JFS: more checks for invalid superblock 2020-12-18 15:23:33 -06:00
jfs_imap.c jfs: Avoid field-overflowing memcpy() 2021-06-23 09:21:52 -05:00
jfs_imap.h
jfs_incore.h jfs: Avoid field-overflowing memcpy() 2021-06-23 09:21:52 -05:00
jfs_inode.c inode: make init and permission helpers idmapped mount aware 2021-01-24 14:27:16 +01:00
jfs_inode.h jfs: convert to fileattr 2021-04-12 15:04:29 +02:00
jfs_lock.h
jfs_logmgr.c block: pass a block_device and opf to bio_alloc 2022-02-02 07:49:59 -07:00
jfs_logmgr.h jfs: delete duplicated words + other fixes 2020-11-13 13:36:00 -06:00
jfs_metapage.c Filesystem folio changes for 5.18 2022-03-22 18:26:56 -07:00
jfs_metapage.h
jfs_mount.c JFS: fix memleak in jfs_mount 2021-09-23 09:52:01 -05:00
jfs_superblock.h
jfs_txnmgr.c jfs: Remove trailing semicolon in macros 2021-05-21 10:36:22 -05:00
jfs_txnmgr.h
jfs_types.h
jfs_umount.c
jfs_unicode.c
jfs_unicode.h
jfs_uniupr.c
jfs_xattr.h jfs: Replace zero-length array with flexible-array member 2020-03-09 15:18:51 -05:00
jfs_xtree.c jfs: delete duplicated words + other fixes 2020-11-13 13:36:00 -06:00
jfs_xtree.h
namei.c jfs: convert to fileattr 2021-04-12 15:04:29 +02:00
resize.c jfs: use sb_bdev_nr_blocks 2021-10-18 14:43:23 -06:00
super.c fs: allocate inode by using alloc_inode_sb() 2022-03-22 15:57:03 -07:00
symlink.c
xattr.c acl: handle idmapped mounts 2021-01-24 14:27:17 +01:00