Ritesh Harjani
8119853653
ext4: mballoc: Use this_cpu_read instead of this_cpu_ptr
Simplify reading a seq variable by directly using this_cpu_read API
instead of doing this_cpu_ptr and then dereferencing it.
This also avoid the below kernel BUG: which happens when
CONFIG_DEBUG_PREEMPT is enabled
BUG: using smp_processor_id() in preemptible [00000000] code: syz-fuzzer/6927
caller is ext4_mb_new_blocks+0xa4d/0x3b70 fs/ext4/mballoc.c:4711
CPU: 1 PID: 6927 Comm: syz-fuzzer Not tainted 5.7.0-next-20200602-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x18f/0x20d lib/dump_stack.c:118
check_preemption_disabled+0x20d/0x220 lib/smp_processor_id.c:48
ext4_mb_new_blocks+0xa4d/0x3b70 fs/ext4/mballoc.c:4711
ext4_ext_map_blocks+0x201b/0x33e0 fs/ext4/extents.c:4244
ext4_map_blocks+0x4cb/0x1640 fs/ext4/inode.c:626
ext4_getblk+0xad/0x520 fs/ext4/inode.c:833
ext4_bread+0x7c/0x380 fs/ext4/inode.c:883
ext4_append+0x153/0x360 fs/ext4/namei.c:67
ext4_init_new_dir fs/ext4/namei.c:2757 [inline]
ext4_mkdir+0x5e0/0xdf0 fs/ext4/namei.c:2802
vfs_mkdir+0x419/0x690 fs/namei.c:3632
do_mkdirat+0x21e/0x280 fs/namei.c:3655
do_syscall_64+0x60/0xe0 arch/x86/entry/common.c:359
entry_SYSCALL_64_after_hwframe+0x44/0xa9
Fixes: 42f56b7a4a7d ("ext4: mballoc: introduce pcpu seqcnt for freeing PA
to improve ENOSPC handling")
Suggested-by: Borislav Petkov <bp@alien8.de>
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Ritesh Harjani <riteshh@linux.ibm.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reported-by: syzbot+82f324bb69744c5f6969@syzkaller.appspotmail.com
Link: https://lore.kernel.org/r/534f275016296996f54ecf65168bb3392b6f653d.1591699601.git.riteshh@linux.ibm.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2020-06-11 11:03:26 -04:00
..
2020-06-03 23:16:50 -04:00
2017-12-17 22:00:59 -05:00
2020-06-03 23:16:52 -04:00
2017-11-02 11:10:55 +01:00
2020-04-01 17:29:06 -04:00
2020-06-11 11:01:33 -04:00
2020-06-03 23:16:49 -04:00
2020-04-15 23:58:49 -04:00
2020-06-03 23:16:53 -04:00
2020-06-11 10:51:44 -04:00
2020-06-03 23:16:49 -04:00
2020-01-25 02:03:03 -05:00
2020-06-11 10:57:40 -04:00
2020-06-03 23:16:55 -04:00
2019-05-12 04:49:47 -04:00
2017-12-17 22:00:59 -05:00
2020-06-03 23:16:51 -04:00
2019-09-03 01:43:17 -04:00
2020-06-11 10:51:44 -04:00
2020-06-03 23:16:50 -04:00
2020-06-03 23:16:50 -04:00
2020-01-09 16:42:29 -07:00
2020-06-11 10:51:44 -04:00
2020-06-11 10:51:44 -04:00
2020-06-03 23:16:52 -04:00
2020-01-09 16:42:29 -07:00
2020-06-11 11:03:26 -04:00
2020-06-03 23:16:52 -04:00
2020-06-03 23:16:50 -04:00
2020-04-01 17:29:06 -04:00
2020-04-01 17:29:06 -04:00
2020-06-03 23:16:50 -04:00
2020-03-28 13:21:08 +01:00
2020-01-17 16:24:54 -05:00
2020-02-21 19:31:46 -05:00
2020-06-11 10:59:38 -04:00
2018-01-11 22:10:40 -05:00
2020-03-25 09:50:09 -06:00
2018-07-29 17:00:22 -04:00
2020-05-28 22:09:47 -04:00
2018-05-10 11:52:14 -04:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2020-06-03 23:16:50 -04:00
2020-03-14 14:43:13 -04:00