Subject: WARNING: locking bug in __icmp_send

From: syzbot <[email-masked]>
Date: Tue, 05 Mar 2019 19:52:04 -0800

Hello,

syzbot found the following crash on:

HEAD commit:    d9862cfbe209 Merge tag 'mips_5.1' of git://git.kernel.org/..
git tree:       net
console output: https://syzkaller.appspot.com/x/log.txt?x=10dfb0e7200000
kernel config:  https://syzkaller.appspot.com/x/.config?x=73d88a42238825ad
dashboard link: https://syzkaller.appspot.com/bug?extid=173d67242daa7ce45f85
compiler:       gcc (GCC) 9.0.0 20181231 (experimental)
syz repro:      https://syzkaller.appspot.com/x/repro.syz?x=153d6923200000

IMPORTANT: if you fix the bug, please add the following tag to the commit:
Reported-by: [email-masked]

Enabling of bearer <udp:syz1> rejected, already enabled
Enabling of bearer <udp:syz1> rejected, already enabled
Enabling of bearer <udp:syz1> rejected, already enabled
------------[ cut here ]------------
DEBUG_LOCKS_WARN_ON(class_idx > MAX_LOCKDEP_KEYS)
WARNING: CPU: 0 PID: 9 at kernel/locking/lockdep.c:3315  
__lock_acquire+0x13bf/0x4700 kernel/locking/lockdep.c:3315
Enabling of bearer <udp:syz1> rejected, already enabled
Kernel panic - not syncing: panic_on_warn set ...
CPU: 0 PID: 9 Comm: ksoftirqd/0 Not tainted 5.0.0+ #109
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+0x172/0x1f0 lib/dump_stack.c:113
Enabling of bearer <udp:syz1> rejected, already enabled
  panic+0x2cb/0x65c kernel/panic.c:214
kobject: 'loop0' (00000000f02900e9): kobject_uevent_env
kobject: 'loop0' (00000000f02900e9): fill_kobj_path: path  
= '/devices/virtual/block/loop0'
  __warn.cold+0x20/0x45 kernel/panic.c:571
  report_bug+0x263/0x2b0 lib/bug.c:186
  fixup_bug arch/x86/kernel/traps.c:178 [inline]
  fixup_bug arch/x86/kernel/traps.c:173 [inline]
  do_error_trap+0x11b/0x200 arch/x86/kernel/traps.c:271
  do_invalid_op+0x37/0x50 arch/x86/kernel/traps.c:290
kobject: 'loop2' (00000000763050ef): kobject_uevent_env
  invalid_op+0x14/0x20 arch/x86/entry/entry_64.S:973
RIP: 0010:__lock_acquire+0x13bf/0x4700 kernel/locking/lockdep.c:3315
kobject: 'loop2' (00000000763050ef): fill_kobj_path: path  
= '/devices/virtual/block/loop2'
Code: 8b 1d 69 20 06 08 45 85 db 0f 85 d6 f4 ff ff 48 c7 c6 80 a4 6b 87 48  
c7 c7 e0 78 6b 87 44 89 9c 24 98 00 00 00 e8 0f 26 ec ff <0f> 0b 44 8b 9c  
24 98 00 00 00 e9 af f4 ff ff 8b 3d bc e4 fe 08 85
RSP: 0018:ffff8880aa26f300 EFLAGS: 00010082
RAX: 0000000000000000 RBX: 0000000066c4c53a RCX: 0000000000000000
RDX: 0000000000000100 RSI: ffffffff815a65c6 RDI: ffffed101544de52
RBP: ffff8880aa26f4d0 R08: ffff8880aa25c240 R09: fffffbfff1133335
R10: fffffbfff1133334 R11: ffffffff889999a3 R12: ffff8880aa25cb28
R13: ffff8880aa25cb32 R14: 0000000066c4c53a R15: ffff8880aa25c240
Enabling of bearer <udp:syz1> rejected, already enabled
  lock_acquire+0x16f/0x3f0 kernel/locking/lockdep.c:3841
kobject: 'loop5' (0000000002a93434): kobject_uevent_env
kobject: 'loop5' (0000000002a93434): fill_kobj_path: path  
= '/devices/virtual/block/loop5'
  __raw_spin_trylock include/linux/spinlock_api_smp.h:90 [inline]
  _raw_spin_trylock+0x62/0x80 kernel/locking/spinlock.c:128
  spin_trylock include/linux/spinlock.h:339 [inline]
  icmp_xmit_lock net/ipv4/icmp.c:219 [inline]
  __icmp_send+0x553/0x1400 net/ipv4/icmp.c:666
Enabling of bearer <udp:syz1> rejected, already enabled
kobject: 'loop0' (00000000f02900e9): kobject_uevent_env
kobject: 'loop0' (00000000f02900e9): fill_kobj_path: path  
= '/devices/virtual/block/loop0'
kobject: 'loop1' (000000004f39548c): kobject_uevent_env
  icmp_send include/net/icmp.h:47 [inline]
  __udp4_lib_rcv+0x1fb6/0x2c50 net/ipv4/udp.c:2323
kobject: 'loop1' (000000004f39548c): fill_kobj_path: path  
= '/devices/virtual/block/loop1'
  udp_rcv+0x22/0x30 net/ipv4/udp.c:2482
  ip_protocol_deliver_rcu+0x60/0x8f0 net/ipv4/ip_input.c:208
  ip_local_deliver_finish+0x23b/0x390 net/ipv4/ip_input.c:234
kobject: 'loop2' (00000000763050ef): kobject_uevent_env
  NF_HOOK include/linux/netfilter.h:289 [inline]
  NF_HOOK include/linux/netfilter.h:283 [inline]
  ip_local_deliver+0x1e9/0x520 net/ipv4/ip_input.c:255
kobject: 'loop2' (00000000763050ef): fill_kobj_path: path  
= '/devices/virtual/block/loop2'
  dst_input include/net/dst.h:450 [inline]
  ip_rcv_finish+0x1e1/0x300 net/ipv4/ip_input.c:414
  NF_HOOK include/linux/netfilter.h:289 [inline]
  NF_HOOK include/linux/netfilter.h:283 [inline]
  ip_rcv+0xe8/0x3f0 net/ipv4/ip_input.c:524
  __netif_receive_skb_one_core+0x115/0x1a0 net/core/dev.c:4973
  __netif_receive_skb+0x2c/0x1c0 net/core/dev.c:5083
  process_backlog+0x206/0x750 net/core/dev.c:5923
  napi_poll net/core/dev.c:6346 [inline]
  net_rx_action+0x4fa/0x1070 net/core/dev.c:6412
  __do_softirq+0x266/0x95a kernel/softirq.c:292
  run_ksoftirqd kernel/softirq.c:654 [inline]
  run_ksoftirqd+0x8e/0x110 kernel/softirq.c:646
  smpboot_thread_fn+0x6ab/0xa10 kernel/smpboot.c:164
  kthread+0x357/0x430 kernel/kthread.c:246
  ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352
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 [email-masked].

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