WARNING in submit_bio_checks

73 views
Skip to first unread message

syzbot

unread,
Jul 11, 2020, 1:34:21 AM7/11/20
to and...@fb.com, a...@kernel.org, ax...@kernel.dk, b...@vger.kernel.org, dan...@iogearbox.net, john.fa...@gmail.com, ka...@fb.com, kps...@chromium.org, linux...@vger.kernel.org, linux-...@vger.kernel.org, net...@vger.kernel.org, songliu...@fb.com, syzkall...@googlegroups.com, y...@fb.com
Hello,

syzbot found the following crash on:

HEAD commit: 9e50b94b Add linux-next specific files for 20200703
git tree: linux-next
console output: https://syzkaller.appspot.com/x/log.txt?x=112aaa1f100000
kernel config: https://syzkaller.appspot.com/x/.config?x=f99cc0faa1476ed6
dashboard link: https://syzkaller.appspot.com/bug?extid=4c50ac32e5b10e4133e1
compiler: gcc (GCC) 10.1.0-syz 20200507
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=1111fb6d100000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=1218fa1f100000

IMPORTANT: if you fix the bug, please add the following tag to the commit:
Reported-by: syzbot+4c50ac...@syzkaller.appspotmail.com

------------[ cut here ]------------
Trying to write to read-only block-device nullb0 (partno 0)
WARNING: CPU: 0 PID: 6821 at block/blk-core.c:857 bio_check_ro block/blk-core.c:857 [inline]
WARNING: CPU: 0 PID: 6821 at block/blk-core.c:857 submit_bio_checks+0x1aba/0x1f70 block/blk-core.c:985
Kernel panic - not syncing: panic_on_warn set ...
CPU: 0 PID: 6821 Comm: syz-executor914 Not tainted 5.8.0-rc3-next-20200703-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
panic+0x2e3/0x75c kernel/panic.c:231
__warn.cold+0x20/0x45 kernel/panic.c:600
report_bug+0x1bd/0x210 lib/bug.c:198
handle_bug+0x38/0x90 arch/x86/kernel/traps.c:235
exc_invalid_op+0x13/0x40 arch/x86/kernel/traps.c:255
asm_exc_invalid_op+0x12/0x20 arch/x86/include/asm/idtentry.h:563
RIP: 0010:bio_check_ro block/blk-core.c:857 [inline]
RIP: 0010:submit_bio_checks+0x1aba/0x1f70 block/blk-core.c:985
Code: 04 00 00 45 8b a4 24 a4 05 00 00 48 8d 74 24 68 48 89 ef e8 b8 21 fe ff 48 c7 c7 e0 ce 91 88 48 89 c6 44 89 e2 e8 08 df c0 fd <0f> 0b 48 b8 00 00 00 00 00 fc ff df 4c 89 ea 48 c1 ea 03 80 3c 02
RSP: 0018:ffffc90001277338 EFLAGS: 00010286
RAX: 0000000000000000 RBX: ffff8880a0cb2240 RCX: 0000000000000000
RDX: ffff8880a8ebc180 RSI: ffffffff815d7d27 RDI: fffff5200024ee59
RBP: ffff8880a03101c0 R08: 0000000000000001 R09: ffff8880ae6318e7
R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
R13: ffff8880a03101c8 R14: 0000000000000000 R15: ffff8880a03101e8
submit_bio_noacct+0x89/0x12d0 block/blk-core.c:1198
submit_bio+0x263/0x5b0 block/blk-core.c:1283
submit_bh_wbc+0x685/0x8e0 fs/buffer.c:3105
__block_write_full_page+0x837/0x12e0 fs/buffer.c:1848
block_write_full_page+0x214/0x270 fs/buffer.c:3034
__writepage+0x60/0x170 mm/page-writeback.c:2311
write_cache_pages+0x736/0x11b0 mm/page-writeback.c:2246
generic_writepages mm/page-writeback.c:2337 [inline]
generic_writepages+0xe2/0x150 mm/page-writeback.c:2326
do_writepages+0xec/0x290 mm/page-writeback.c:2352
__filemap_fdatawrite_range+0x2a1/0x380 mm/filemap.c:422
filemap_write_and_wait_range mm/filemap.c:655 [inline]
filemap_write_and_wait_range+0xe1/0x1c0 mm/filemap.c:649
filemap_write_and_wait include/linux/fs.h:2629 [inline]
__sync_blockdev fs/block_dev.c:480 [inline]
sync_blockdev fs/block_dev.c:489 [inline]
__blkdev_put+0x69a/0x890 fs/block_dev.c:1863
blkdev_close+0x8c/0xb0 fs/block_dev.c:1947
__fput+0x33c/0x880 fs/file_table.c:281
task_work_run+0xdd/0x190 kernel/task_work.c:135
exit_task_work include/linux/task_work.h:25 [inline]
do_exit+0xb72/0x2a40 kernel/exit.c:806
do_group_exit+0x125/0x310 kernel/exit.c:904
__do_sys_exit_group kernel/exit.c:915 [inline]
__se_sys_exit_group kernel/exit.c:913 [inline]
__x64_sys_exit_group+0x3a/0x50 kernel/exit.c:913
do_syscall_64+0x60/0xe0 arch/x86/entry/common.c:367
entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x43ee48
Code: Bad RIP value.
RSP: 002b:00007ffdd4c8f808 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 000000000043ee48
RDX: 0000000000000000 RSI: 000000000000003c RDI: 0000000000000000
RBP: 00000000004be648 R08: 00000000000000e7 R09: ffffffffffffffd0
R10: 0000000000000003 R11: 0000000000000246 R12: 0000000000000001
R13: 00000000006d0180 R14: 0000000000000000 R15: 0000000000000000
Kernel Offset: disabled
Rebooting in 86400 seconds..


---
This bug is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzk...@googlegroups.com.

syzbot will keep track of this bug report. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
syzbot can test patches for this bug, for details see:
https://goo.gl/tpsmEJ#testing-patches

Christoph Hellwig

unread,
Jul 13, 2020, 6:18:48 AM7/13/20
to syzbot, and...@fb.com, a...@kernel.org, ax...@kernel.dk, b...@vger.kernel.org, dan...@iogearbox.net, john.fa...@gmail.com, ka...@fb.com, kps...@chromium.org, linux...@vger.kernel.org, linux-...@vger.kernel.org, net...@vger.kernel.org, songliu...@fb.com, syzkall...@googlegroups.com, y...@fb.com
On Fri, Jul 10, 2020 at 10:34:19PM -0700, syzbot wrote:
> Hello,
>
> syzbot found the following crash on:

This is not a crash, but a WARN_ONCE. A pre-existing one that just
slightly changed the printed message recently.

Eric Biggers

unread,
Jul 13, 2020, 12:16:17 PM7/13/20
to Christoph Hellwig, syzbot, and...@fb.com, a...@kernel.org, ax...@kernel.dk, b...@vger.kernel.org, dan...@iogearbox.net, john.fa...@gmail.com, ka...@fb.com, kps...@chromium.org, linux...@vger.kernel.org, linux-...@vger.kernel.org, net...@vger.kernel.org, songliu...@fb.com, syzkall...@googlegroups.com, y...@fb.com
It doesn't really matter. WARN is for indicating kernel bugs only.
A user-triggable WARN is a bug. Either the bug that makes the WARN
reachable needs to be fixed, or if the WARN is legitimately user-reachable
it needs to be removed or replaced with a proper ratelimited log message.

This one looks legitimately user-reachable, so we could do:

diff --git a/block/blk-core.c b/block/blk-core.c
index d9d632639bd1..354c51ad5c81 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -854,8 +854,8 @@ static inline bool bio_check_ro(struct bio *bio, struct hd_struct *part)
if (op_is_flush(bio->bi_opf) && !bio_sectors(bio))
return false;

- WARN_ONCE(1,
- "Trying to write to read-only block-device %s (partno %d)\n",
+ pr_warn_ratelimited(
+ "block: trying to write to read-only block-device %s (partno %d)\n",
bio_devname(bio, b), part->partno);
/* Older lvm-tools actually trigger this */
return false;


We could also show current->comm and current->pid if they would be useful here.

And yes, this is preexisting which is why syzbot has reported this before
(https://syzkaller.appspot.com/bug?id=79eda145ab047a0dc7d03ca5fcb1cf12206eb481).
Just no one has bothered to fix it yet.

- Eric

B K Karthik

unread,
Jul 16, 2020, 12:39:59 AM7/16/20
to syzkaller-bugs


On Monday, 13 July 2020 12:16:17 UTC-4, Eric Biggers wrote:
On Mon, Jul 13, 2020 at 11:18:36AM +0100, Christoph Hellwig wrote:
> On Fri, Jul 10, 2020 at 10:34:19PM -0700, syzbot wrote:
> > Hello,
> >
> > syzbot found the following crash on:
>
> This is not a crash, but a WARN_ONCE.  A pre-existing one that just
> slightly changed the printed message recently.
>

It doesn't really matter.  WARN is for indicating kernel bugs only.
A user-triggable WARN is a bug.  

Perhaps we could try and check for write permissions
before we handed the file descriptor to blkdev_put() ?
         
duplicating the logic in blkdev_get_by_path() to
blkdev_get_by_dev() to avoid a user triggerable WARN
trying to write to a read-only block device.
         
blkdev_get_by_path() looks at ((mode & FMODE_WRITE) && bdev_read_only(bdev))
to check for write permissions. We can avoid this
particular user-triggerable WARN by doing the same with blkdev_get_by_dev()

I apologise if this is not the way to reply to syzbot-reported bugs. I was unable to find the email IDs i am supposed to reply to.
0001-fs-block_dev.c-fix-WARNING-in-submit_bio_check.patch

syzbot

unread,
Jul 16, 2020, 1:00:06 AM7/16/20
to and...@fb.com, a...@kernel.org, ax...@kernel.dk, bkka...@pesu.pes.edu, b...@vger.kernel.org, dan...@iogearbox.net, da...@davemloft.net, ebig...@kernel.org, h...@infradead.org, john.fa...@gmail.com, ka...@fb.com, kps...@chromium.org, linux...@vger.kernel.org, linux-...@vger.kernel.org, linux-...@vger.kernel.org, mcg...@kernel.org, net...@vger.kernel.org, songliu...@fb.com, syzkall...@googlegroups.com, vi...@zeniv.linux.org.uk, y...@fb.com
syzbot has bisected this issue to:

commit 449325b52b7a6208f65ed67d3484fd7b7184477b
Author: Alexei Starovoitov <a...@kernel.org>
Date: Tue May 22 02:22:29 2018 +0000

umh: introduce fork_usermode_blob() helper

bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=10fc4b00900000
start commit: 9e50b94b Add linux-next specific files for 20200703
git tree: linux-next
final oops: https://syzkaller.appspot.com/x/report.txt?x=12fc4b00900000
console output: https://syzkaller.appspot.com/x/log.txt?x=14fc4b00900000
Reported-by: syzbot+4c50ac...@syzkaller.appspotmail.com
Fixes: 449325b52b7a ("umh: introduce fork_usermode_blob() helper")

For information about bisection process see: https://goo.gl/tpsmEJ#bisection

syzbot

unread,
Jul 16, 2020, 2:18:06 AM7/16/20
to bkka...@pesu.pes.edu, syzkall...@googlegroups.com
Hello,

syzbot has tested the proposed patch but the reproducer is still triggering an issue:
WARNING in submit_bio_checks

------------[ cut here ]------------
Trying to write to read-only block-device nullb0 (partno 0)
WARNING: CPU: 1 PID: 8272 at block/blk-core.c:857 bio_check_ro block/blk-core.c:857 [inline]
WARNING: CPU: 1 PID: 8272 at block/blk-core.c:857 submit_bio_checks+0x1aba/0x1f70 block/blk-core.c:985
Kernel panic - not syncing: panic_on_warn set ...
CPU: 1 PID: 8272 Comm: syz-executor.4 Not tainted 5.8.0-rc5-next-20200715-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
panic+0x2e3/0x75c kernel/panic.c:231
__warn.cold+0x20/0x45 kernel/panic.c:600
report_bug+0x1bd/0x210 lib/bug.c:198
handle_bug+0x38/0x90 arch/x86/kernel/traps.c:234
exc_invalid_op+0x13/0x40 arch/x86/kernel/traps.c:254
asm_exc_invalid_op+0x12/0x20 arch/x86/include/asm/idtentry.h:542
RIP: 0010:bio_check_ro block/blk-core.c:857 [inline]
RIP: 0010:submit_bio_checks+0x1aba/0x1f70 block/blk-core.c:985
Code: 04 00 00 45 8b a4 24 a4 05 00 00 48 8d 74 24 68 48 89 ef e8 b8 21 fe ff 48 c7 c7 20 f7 91 88 48 89 c6 44 89 e2 e8 e8 a1 c0 fd <0f> 0b 48 b8 00 00 00 00 00 fc ff df 4c 89 ea 48 c1 ea 03 80 3c 02
RSP: 0018:ffffc90004bc70f8 EFLAGS: 00010286
RAX: 0000000000000000 RBX: ffff8880a0c77078 RCX: 0000000000000000
RDX: ffff88808c55a000 RSI: ffffffff815d8a17 RDI: fffff52000978e11
RBP: ffff888095f185c0 R08: 0000000000000001 R09: ffff8880ae7318e7
R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
R13: ffff888095f185c8 R14: 0000000000000000 R15: ffff888095f185e8
submit_bio_noacct+0x89/0x12b0 block/blk-core.c:1197
submit_bio+0x263/0x5b0 block/blk-core.c:1282
submit_bh_wbc+0x685/0x8e0 fs/buffer.c:3107
__block_write_full_page+0x837/0x12e0 fs/buffer.c:1847
block_write_full_page+0x214/0x270 fs/buffer.c:3033
__writepage+0x60/0x170 mm/page-writeback.c:2311
write_cache_pages+0x736/0x11b0 mm/page-writeback.c:2246
generic_writepages mm/page-writeback.c:2337 [inline]
generic_writepages+0xe2/0x150 mm/page-writeback.c:2326
do_writepages+0xec/0x290 mm/page-writeback.c:2352
__filemap_fdatawrite_range+0x2a1/0x380 mm/filemap.c:422
filemap_write_and_wait_range mm/filemap.c:655 [inline]
filemap_write_and_wait_range+0xe1/0x1c0 mm/filemap.c:649
filemap_write_and_wait include/linux/fs.h:2628 [inline]
__sync_blockdev fs/block_dev.c:480 [inline]
sync_blockdev fs/block_dev.c:489 [inline]
__blkdev_put+0x69a/0x890 fs/block_dev.c:1852
blkdev_close+0x8c/0xb0 fs/block_dev.c:1936
__fput+0x33c/0x880 fs/file_table.c:281
task_work_run+0xdd/0x190 kernel/task_work.c:135
exit_task_work include/linux/task_work.h:25 [inline]
do_exit+0xb7d/0x29f0 kernel/exit.c:806
do_group_exit+0x125/0x310 kernel/exit.c:903
get_signal+0x40b/0x1ee0 kernel/signal.c:2743
do_signal+0x82/0x2520 arch/x86/kernel/signal.c:810
exit_to_usermode_loop arch/x86/entry/common.c:235 [inline]
__prepare_exit_to_usermode+0x14d/0x1f0 arch/x86/entry/common.c:269
do_syscall_64+0x6c/0xe0 arch/x86/entry/common.c:393
entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x45cba9
Code: Bad RIP value.
RSP: 002b:00007f2a0a452cf8 EFLAGS: 00000246 ORIG_RAX: 00000000000000ca
RAX: 0000000000000001 RBX: 000000000078bfa8 RCX: 000000000045cba9
RDX: 00000000000f4240 RSI: 0000000000000081 RDI: 000000000078bfac
RBP: 000000000078bfa0 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 000000000078bfac
R13: 00007fff3723b90f R14: 00007f2a0a4539c0 R15: 000000000078bfac
Kernel Offset: disabled
Rebooting in 86400 seconds..


Tested on:

commit: ca0e494a Add linux-next specific files for 20200715
git tree: linux-next
console output: https://syzkaller.appspot.com/x/log.txt?x=15ce4c20900000
kernel config: https://syzkaller.appspot.com/x/.config?x=afe9e230b4d3e174
dashboard link: https://syzkaller.appspot.com/bug?extid=4c50ac32e5b10e4133e1
compiler: gcc (GCC) 10.1.0-syz 20200507
patch: https://syzkaller.appspot.com/x/patch.diff?x=17033fc0900000

Reply all
Reply to author
Forward
0 new messages