Thread (1 message) 1 message, 1 author, 2018-02-07

general protection fault in pppol2tp_connect

From: syzbot <hidden>
Date: 2018-02-07 15:17:04
Also in: lkml

Hello,

syzbot has tested the proposed patch but the reproducer still triggered  
crash:
KASAN: use-after-free Read in l2tp_tunnel_del_work

==================================================================
BUG: KASAN: use-after-free in l2tp_tunnel_del_work+0x22e/0x240  
net/l2tp/l2tp_core.c:1292
Read of size 8 at addr ffff8801a66b2960 by task kworker/u4:0/5

CPU: 0 PID: 5 Comm: kworker/u4:0 Not tainted 4.15.0+ #33
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS  
Google 01/01/2011
Workqueue: l2tp l2tp_tunnel_del_work
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_load8_noabort+0x14/0x20 mm/kasan/report.c:430
  l2tp_tunnel_del_work+0x22e/0x240 net/l2tp/l2tp_core.c:1292
  process_one_work+0xbbf/0x1af0 kernel/workqueue.c:2113
  worker_thread+0x223/0x1990 kernel/workqueue.c:2247
  kthread+0x33c/0x400 kernel/kthread.c:238
  ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:542

Allocated by task 24128:
  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:3541
  sock_alloc_inode+0x70/0x300 net/socket.c:244
  alloc_inode+0x65/0x180 fs/inode.c:209
  new_inode_pseudo+0x69/0x190 fs/inode.c:891
  sock_alloc+0x41/0x270 net/socket.c:565
  __sock_create+0x148/0x850 net/socket.c:1249
  sock_create net/socket.c:1325 [inline]
  SYSC_socket net/socket.c:1355 [inline]
  SyS_socket+0xeb/0x1d0 net/socket.c:1335
  entry_SYSCALL_64_fastpath+0x29/0xa0

Freed by task 24136:
  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:3485 [inline]
  kmem_cache_free+0x83/0x2a0 mm/slab.c:3743
  sock_destroy_inode+0x56/0x70 net/socket.c:274
  destroy_inode+0x15d/0x200 fs/inode.c:266
  evict+0x57e/0x920 fs/inode.c:571
  iput_final fs/inode.c:1516 [inline]
  iput+0x7b9/0xaf0 fs/inode.c:1543
  dentry_unlink_inode+0x4b0/0x5e0 fs/dcache.c:371
  __dentry_kill+0x3de/0x700 fs/dcache.c:575
  dentry_kill fs/dcache.c:616 [inline]
  dput.part.21+0x6fb/0x830 fs/dcache.c:826
  dput+0x1f/0x30 fs/dcache.c:790
  __fput+0x51c/0x7e0 fs/file_table.c:227
  ____fput+0x15/0x20 fs/file_table.c:243
  task_work_run+0x199/0x270 kernel/task_work.c:113
  exit_task_work include/linux/task_work.h:22 [inline]
  do_exit+0x9bb/0x1ad0 kernel/exit.c:865
  do_group_exit+0x149/0x400 kernel/exit.c:968
  get_signal+0x73a/0x16d0 kernel/signal.c:2469
  do_signal+0x90/0x1eb0 arch/x86/kernel/signal.c:809
  exit_to_usermode_loop+0x258/0x2f0 arch/x86/entry/common.c:161
  prepare_exit_to_usermode arch/x86/entry/common.c:195 [inline]
  syscall_return_slowpath+0x490/0x550 arch/x86/entry/common.c:264
  entry_SYSCALL_64_fastpath+0x9e/0xa0

The buggy address belongs to the object at ffff8801a66b2940
  which belongs to the cache sock_inode_cache of size 992
The buggy address is located 32 bytes inside of
  992-byte region [ffff8801a66b2940, ffff8801a66b2d20)
The buggy address belongs to the page:
page:ffffea000699ac80 count:1 mapcount:0 mapping:ffff8801a66b2040  
index:0xffff8801a66b2ffd
flags: 0x2fffc0000000100(slab)
raw: 02fffc0000000100 ffff8801a66b2040 ffff8801a66b2ffd 0000000100000003
raw: ffffea000699a760 ffffea000699ad20 ffff8801d980e9c0 0000000000000000
page dumped because: kasan: bad access detected

Memory state around the buggy address:
  ffff8801a66b2800: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
  ffff8801a66b2880: fb fb fb fb fc fc fc fc fc fc fc fc fc fc fc fc
ffff8801a66b2900: fc fc fc fc fc fc fc fc fb fb fb fb fb fb fb fb
                                                        ^
  ffff8801a66b2980: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
  ffff8801a66b2a00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
==================================================================


Tested on  
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git/master  
commit
617aebe6a97efa539cc4b8a52adccd89596e6be0 (Sun Feb 4 00:25:42 2018 +0000)
Merge tag 'usercopy-v4.16-rc1' of  
git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux

compiler: gcc (GCC) 7.1.1 20170620
Patch is attached.
Kernel config is attached.
Raw console output is attached.

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