KASAN: slab-out-of-bounds Read in erspan_build_header

From: syzbot <hidden>
Date: 2018-01-23 06:58:05
Also in: lkml

Hello,

syzbot hit the following crash on upstream commit
a0ec1ded22e6a6bc41981fae22406835b006a66e (Mon Jan 22 20:44:52 2018 +0000)
orangefs: initialize op on loop restart in orangefs_devreq_read

So far this crash happened 3 times on upstream.
C reproducer is attached.
syzkaller reproducer is attached.
Raw console output is attached.
compiler: gcc (GCC) 7.1.1 20170620
.config is attached.
user-space arch: i386

IMPORTANT: if you fix the bug, please add the following tag to the commit:
Reported-by: syzbot+f0ddeb2b032a8e1d9098@syzkaller.appspotmail.com
It will help syzbot understand when the bug is fixed. See footer for  
details.
If you forward the report, please keep this part and the footer.

==================================================================
BUG: KASAN: slab-out-of-bounds in erspan_build_header+0x3bf/0x3d0  
net/ipv4/ip_gre.c:698
Read of size 2 at addr ffff8801d9b9804b by task syzkaller377964/3654

CPU: 0 PID: 3654 Comm: syzkaller377964 Not tainted 4.15.0-rc9+ #185
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS  
Google 01/01/2011
Call Trace:
  __dump_stack lib/dump_stack.c:17 [inline]
  dump_stack+0x194/0x257 lib/dump_stack.c:53
  print_address_description+0x73/0x250 mm/kasan/report.c:252
  kasan_report_error mm/kasan/report.c:351 [inline]
  kasan_report+0x25b/0x340 mm/kasan/report.c:409
  __asan_report_load_n_noabort+0xf/0x20 mm/kasan/report.c:440
  erspan_build_header+0x3bf/0x3d0 net/ipv4/ip_gre.c:698
  erspan_xmit+0x3b8/0x13b0 net/ipv4/ip_gre.c:740
  __netdev_start_xmit include/linux/netdevice.h:4042 [inline]
  netdev_start_xmit include/linux/netdevice.h:4051 [inline]
  packet_direct_xmit+0x315/0x6b0 net/packet/af_packet.c:266
  packet_snd net/packet/af_packet.c:2943 [inline]
  packet_sendmsg+0x3aed/0x60b0 net/packet/af_packet.c:2968
  sock_sendmsg_nosec net/socket.c:638 [inline]
  sock_sendmsg+0xca/0x110 net/socket.c:648
  SYSC_sendto+0x361/0x5c0 net/socket.c:1729
  SyS_sendto+0x40/0x50 net/socket.c:1697
  do_syscall_32_irqs_on arch/x86/entry/common.c:327 [inline]
  do_fast_syscall_32+0x3ee/0xf9d arch/x86/entry/common.c:389
  entry_SYSENTER_compat+0x54/0x63 arch/x86/entry/entry_64_compat.S:129
RIP: 0023:0xf7fcfc79
RSP: 002b:00000000ffc6976c EFLAGS: 00000286 ORIG_RAX: 0000000000000171
RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 0000000020011000
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000020008000
RBP: 000000000000001c R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000

Allocated by task 2203:
  save_stack+0x43/0xd0 mm/kasan/kasan.c:447
  set_track mm/kasan/kasan.c:459 [inline]
  kasan_kmalloc+0xad/0xe0 mm/kasan/kasan.c:551
  kasan_slab_alloc+0x12/0x20 mm/kasan/kasan.c:489
  kmem_cache_alloc+0x12e/0x760 mm/slab.c:3544
  kmem_cache_zalloc include/linux/slab.h:678 [inline]
  copy_signal+0xfe/0xa11 kernel/fork.c:1396
  copy_process.part.38+0x1ed2/0x4b20 kernel/fork.c:1749
  copy_process kernel/fork.c:1565 [inline]
  _do_fork+0x1f7/0xfe0 kernel/fork.c:2044
  SYSC_clone kernel/fork.c:2154 [inline]
  SyS_clone+0x37/0x50 kernel/fork.c:2148
  do_syscall_64+0x273/0x920 arch/x86/entry/common.c:285
  return_from_SYSCALL_64+0x0/0x75

Freed by task 0:
  save_stack+0x43/0xd0 mm/kasan/kasan.c:447
  set_track mm/kasan/kasan.c:459 [inline]
  kasan_slab_free+0x71/0xc0 mm/kasan/kasan.c:524
  __cache_free mm/slab.c:3488 [inline]
  kmem_cache_free+0x83/0x2a0 mm/slab.c:3746
  free_signal_struct kernel/fork.c:403 [inline]
  put_signal_struct kernel/fork.c:409 [inline]
  __put_task_struct+0x33f/0x580 kernel/fork.c:423
  put_task_struct include/linux/sched/task.h:96 [inline]
  delayed_put_task_struct+0xca/0x3d0 kernel/exit.c:180
  __rcu_reclaim kernel/rcu/rcu.h:195 [inline]
  rcu_do_batch kernel/rcu/tree.c:2758 [inline]
  invoke_rcu_callbacks kernel/rcu/tree.c:3012 [inline]
  __rcu_process_callbacks kernel/rcu/tree.c:2979 [inline]
  rcu_process_callbacks+0xd6c/0x17f0 kernel/rcu/tree.c:2996
  __do_softirq+0x2d7/0xb85 kernel/softirq.c:285

The buggy address belongs to the object at ffff8801d9b980c0
  which belongs to the cache signal_cache of size 1296
The buggy address is located 117 bytes to the left of
  1296-byte region [ffff8801d9b980c0, ffff8801d9b985d0)
The buggy address belongs to the page:
page:ffffea000766e600 count:1 mapcount:0 mapping:ffff8801d9b980c0 index:0x0  
compound_mapcount: 0
flags: 0x2fffc0000008100(slab|head)
raw: 02fffc0000008100 ffff8801d9b980c0 0000000000000000 0000000100000005
raw: ffffea000766c420 ffffea000766da20 ffff8801dae27e40 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
  ffff8801d9b97f00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
  ffff8801d9b97f80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
ffff8801d9b98000: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                                               ^
  ffff8801d9b98080: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
  ffff8801d9b98100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================


---
This bug is generated by a dumb bot. It may contain errors.
See https://goo.gl/tpsmEJ for details.
Direct all questions to syzkaller@googlegroups.com.

syzbot will keep track of this bug report.
If you forgot to add the Reported-by tag, once the fix for this bug is  
merged
into any tree, please reply to this email with:
#syz fix: exact-commit-title
If you want to test a patch for this bug, please reply with:
#syz test: git://repo/address.git branch
and provide the patch inline or as an attachment.
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.

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help