Re: [PATCH rdma-next] RDMA/restrack: Protect from reentry to resource return path

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 11, 2018 at 10:10:10PM +0300, Leon Romanovsky wrote:
> From: Leon Romanovsky <leonro@xxxxxxxxxxxx>
> 
> Nullify the resource task struct pointer to ensure that subsequent
> calls won't try to release task_struct again.
> 
> ------------[ cut here ]------------
> ODEBUG: free active (active state 1) object type: rcu_head hint:
> (null)
> WARNING: CPU: 0 PID: 6048 at lib/debugobjects.c:329
> debug_print_object+0x16a/0x210 lib/debugobjects.c:326
> Kernel panic - not syncing: panic_on_warn set ...
> 
> CPU: 0 PID: 6048 Comm: syz-executor022 Not tainted
> 4.19.0-rc7-next-20181008+ #89
> 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+0x244/0x3ab lib/dump_stack.c:113
>   panic+0x238/0x4e7 kernel/panic.c:184
>   __warn.cold.8+0x163/0x1ba kernel/panic.c:536
>   report_bug+0x254/0x2d0 lib/bug.c:186
>   fixup_bug arch/x86/kernel/traps.c:178 [inline]
>   do_error_trap+0x11b/0x200 arch/x86/kernel/traps.c:271
>   do_invalid_op+0x36/0x40 arch/x86/kernel/traps.c:290
>   invalid_op+0x14/0x20 arch/x86/entry/entry_64.S:969
> RIP: 0010:debug_print_object+0x16a/0x210 lib/debugobjects.c:326
> Code: 41 88 48 89 fa 48 c1 ea 03 80 3c 02 00 0f 85 92 00 00 00 48 8b 14
> dd
> 60 02 41 88 4c 89 fe 48 c7 c7 00 f8 40 88 e8 36 2f b4 fd <0f> 0b 83 05
> a9
> f4 5e 06 01 48 83 c4 18 5b 41 5c 41 5d 41 5e 41 5f
> RSP: 0018:ffff8801d8c3eda8 EFLAGS: 00010086
> RAX: 0000000000000000 RBX: 0000000000000003 RCX: 0000000000000000
> RDX: 0000000000000000 RSI: ffffffff8164d235 RDI: 0000000000000005
> RBP: ffff8801d8c3ede8 R08: ffff8801d70aa280 R09: ffffed003b5c3eda
> R10: ffffed003b5c3eda R11: ffff8801dae1f6d7 R12: 0000000000000001
> R13: ffffffff8939a760 R14: 0000000000000000 R15: ffffffff8840fca0
>   __debug_check_no_obj_freed lib/debugobjects.c:786 [inline]
>   debug_check_no_obj_freed+0x3ae/0x58d lib/debugobjects.c:818
>   kmem_cache_free+0x202/0x290 mm/slab.c:3759
>   free_task_struct kernel/fork.c:163 [inline]
>   free_task+0x16e/0x1f0 kernel/fork.c:457
>   __put_task_struct+0x2e6/0x620 kernel/fork.c:730
>   put_task_struct include/linux/sched/task.h:96 [inline]
>   finish_task_switch+0x66c/0x900 kernel/sched/core.c:2715
>   context_switch kernel/sched/core.c:2834 [inline]
>   __schedule+0x8d7/0x21d0 kernel/sched/core.c:3480
>   schedule+0xfe/0x460 kernel/sched/core.c:3524
>   freezable_schedule include/linux/freezer.h:172 [inline]
>   futex_wait_queue_me+0x3f9/0x840 kernel/futex.c:2530
>   futex_wait+0x45c/0xa50 kernel/futex.c:2645
>   do_futex+0x31a/0x26d0 kernel/futex.c:3528
>   __do_sys_futex kernel/futex.c:3589 [inline]
>   __se_sys_futex kernel/futex.c:3557 [inline]
>   __x64_sys_futex+0x472/0x6a0 kernel/futex.c:3557
>   do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290
>   entry_SYSCALL_64_after_hwframe+0x49/0xbe
> RIP: 0033:0x446549
> Code: e8 2c b3 02 00 48 83 c4 18 c3 0f 1f 80 00 00 00 00 48 89 f8 48 89 f7
> 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff
> ff 0f 83 2b 09 fc ff c3 66 2e 0f 1f 84 00 00 00 00
> RSP: 002b:00007f3a998f5da8 EFLAGS: 00000246 ORIG_RAX: 00000000000000ca
> RAX: ffffffffffffffda RBX: 00000000006dbc38 RCX: 0000000000446549
> RDX: 0000000000000000 RSI: 0000000000000080 RDI: 00000000006dbc38
> RBP: 00000000006dbc30 R08: 0000000000000000 R09: 0000000000000000
> R10: 0000000000000000 R11: 0000000000000246 R12: 00000000006dbc3c
> R13: 2f646e6162696e69 R14: 666e692f7665642f R15: 00000000006dbd2c
> Kernel Offset: disabled
> 
> Reported-by: syzbot+71aff6ea121ffefc280f@xxxxxxxxxxxxxxxxxxxxxxxxx
> Fixes: ed7a01fd3fd7 ("RDMA/restrack: Release task struct which was hold by CM_ID object")
> Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx>
> ---
> This patch fixes restrack, but I think that the real root cause is in
> UCMA module and it is outcome of one of those unsolved syzkaller bugs
> in that module.

Hmm, that sounds ugly.

Okay, applied to for-next, thanks

Jason




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux