Subject: BUG: unable to handle kernel NULL pointer dereference in ipv6_get_lladdr

From: syzbot <[email-masked]>
Date: Tue, 19 Dec 2017 08:38:01 -0800

Hello,

syzkaller hit the following crash on  
6084b576dca2e898f5c101baef151f7bfdbb606d
git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/master
compiler: gcc (GCC) 7.1.1 20170620
.config is attached
Raw console output is attached.

Unfortunately, I don't have any reproducer for this bug yet.

device lo entered promiscuous mode
device lo left promiscuous mode
BUG: unable to handle kernel NULL pointer dereference at 0000000000000328
IP: __read_once_size include/linux/compiler.h:183 [inline]
IP: __in6_dev_get include/net/addrconf.h:300 [inline]
IP: ipv6_get_lladdr+0x6f/0x270 net/ipv6/addrconf.c:1813
PGD 0 P4D 0
Oops: 0000 [#1] SMP
Dumping ftrace buffer:
    (ftrace buffer empty)
Modules linked in:
CPU: 1 PID: 16588 Comm: syz-executor1 Not tainted 4.15.0-rc3-next-20171214+  
#67
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS  
Google 01/01/2011
RIP: 0010:__read_once_size include/linux/compiler.h:183 [inline]
RIP: 0010:__in6_dev_get include/net/addrconf.h:300 [inline]
RIP: 0010:ipv6_get_lladdr+0x6f/0x270 net/ipv6/addrconf.c:1813
RSP: 0018:ffff88021fd03da8 EFLAGS: 00010206
RAX: ffff8801fcb0a280 RBX: 0000000000000000 RCX: ffffffff8225359f
RDX: 0000000000000100 RSI: 00000000aa440f11 RDI: 0000000000000286
RBP: ffff88021fd03de0 R08: 0000000000000001 R09: 0000000000000002
R10: ffff88021fd03d30 R11: 0000000000000002 R12: ffff8802156f2000
R13: 0000000000000040 R14: 0000000000000000 R15: 0000000000000000
FS:  0000000000000000(0000) GS:ffff88021fd00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000328 CR3: 000000000301e002 CR4: 00000000001606e0
Call Trace:
  <IRQ>
  addrconf_rs_timer+0x128/0x230 net/ipv6/addrconf.c:3762
  call_timer_fn+0x9f/0x3f0 kernel/time/timer.c:1320
  expire_timers kernel/time/timer.c:1357 [inline]
  __run_timers kernel/time/timer.c:1660 [inline]
  run_timer_softirq+0x68a/0x830 kernel/time/timer.c:1686
  __do_softirq+0xcb/0x4f3 kernel/softirq.c:285
  invoke_softirq kernel/softirq.c:365 [inline]
  irq_exit+0xd4/0xe0 kernel/softirq.c:405
  exiting_irq arch/x86/include/asm/apic.h:540 [inline]
  smp_apic_timer_interrupt+0x8e/0x2a0 arch/x86/kernel/apic/apic.c:1052
  apic_timer_interrupt+0xa9/0xb0 arch/x86/entry/entry_64.S:920
  </IRQ>
RIP: 0010:lock_acquire+0x21/0x220 kernel/locking/lockdep.c:3906
RSP: 0018:ffffc90000ee79f8 EFLAGS: 00000292 ORIG_RAX: ffffffffffffff11
RAX: ffff8801fcb0a280 RBX: ffffea00084e2340 RCX: 0000000000000002
RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff83080740
RBP: ffffc90000ee7a38 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: ffff8801fcb0a280 R12: ffffea00084e2340
R13: ffffea00084e2340 R14: 0000000000000000 R15: 0000000000000000
  rcu_lock_acquire include/linux/rcupdate.h:244 [inline]
  rcu_read_lock include/linux/rcupdate.h:630 [inline]
  lock_page_memcg+0x33/0xf0 mm/memcontrol.c:1620
  page_remove_file_rmap mm/rmap.c:1213 [inline]
  page_remove_rmap+0x12e/0x4b0 mm/rmap.c:1298
  zap_pte_range mm/memory.c:1337 [inline]
  zap_pmd_range mm/memory.c:1441 [inline]
  zap_pud_range mm/memory.c:1470 [inline]
  zap_p4d_range mm/memory.c:1491 [inline]
  unmap_page_range+0x86f/0xed0 mm/memory.c:1512
  unmap_single_vma+0xbb/0x140 mm/memory.c:1557
  unmap_vmas+0x65/0xd0 mm/memory.c:1587
  exit_mmap+0xb0/0x1e0 mm/mmap.c:3020
  __mmput kernel/fork.c:966 [inline]
  mmput+0x82/0x190 kernel/fork.c:987
  exit_mm kernel/exit.c:544 [inline]
  do_exit+0x356/0x1050 kernel/exit.c:856
  do_group_exit+0x60/0x100 kernel/exit.c:972
  get_signal+0x36c/0xad0 kernel/signal.c:2337
  do_signal+0x23/0x670 arch/x86/kernel/signal.c:809
  exit_to_usermode_loop+0x13c/0x160 arch/x86/entry/common.c:161
  prepare_exit_to_usermode arch/x86/entry/common.c:195 [inline]
  syscall_return_slowpath+0x1b4/0x1e0 arch/x86/entry/common.c:264
  entry_SYSCALL_64_fastpath+0x94/0x96
RIP: 0033:0x452a09
RSP: 002b:00007f96787f3ce8 EFLAGS: 00000246 ORIG_RAX: 00000000000000ca
RAX: fffffffffffffe00 RBX: 000000000071c0f0 RCX: 0000000000452a09
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 000000000071c0f0
RBP: 000000000071c0f0 R08: 0000000000000422 R09: 000000000071c0c8
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 0000000000a2f7ff R14: 00007f96787f49c0 R15: 0000000000000006
Code: c7 40 07 08 83 e8 b2 2e fd fe e8 3d 9e ff fe 85 c0 5a 74 12 e8 b3 6d  
06 ff 80 3d 73 10 f6 00 00 0f 84 7a 01 00 00 e8 a1 6d 06 ff <4c> 8b a3 28  
03 00 00 e8 15 9e ff fe 85 c0 74 12 e8 8c 6d 06 ff
RIP: __read_once_size include/linux/compiler.h:183 [inline] RSP:  
ffff88021fd03da8
RIP: __in6_dev_get include/net/addrconf.h:300 [inline] RSP: ffff88021fd03da8
RIP: ipv6_get_lladdr+0x6f/0x270 net/ipv6/addrconf.c:1813 RSP:  
ffff88021fd03da8
CR2: 0000000000000328
---[ end trace cc2639f5bc6e4363 ]---

---
This bug is generated by a dumb bot. It may contain errors.
See https://goo.gl/tpsmEJ for details.
Direct all questions to [email-masked].
Please credit me with: Reported-by: syzbot <[email-masked]>

syzbot will keep track of this bug report.
Once a fix for this bug is merged into any tree, reply to this email with:
#syz fix: exact-commit-title
To mark this as a duplicate of another syzbot report, please reply with:
#syz dup: exact-subject-of-another-report
If it's a one-off invalid bug report, please reply with:
#syz invalid
Note: if the crash happens again, it will cause creation of a new bug  
report.
Note: all commands must start from beginning of the line in the email body.