TITLE: WARNING: suspicious RCU usage in rds_tcp_conn_alloc
TYPE: LOCKDEP

[  130.359031] =============================
[  130.363221] WARNING: suspicious RCU usage
[  130.367384] 4.15.0+ #307 Not tainted
[  130.371129] -----------------------------
[  130.375415] ./include/linux/rcupdate.h:302 Illegal context switch in RCU read-side critical section!
[  130.384715] 
[  130.384715] other info that might help us debug this:
[  130.384715] 
[  130.392872] 
[  130.392872] rcu_scheduler_active = 2, debug_locks = 1
[  130.399555] 1 lock held by syz-executor2/31597:
[  130.404221]  #0:  (rcu_read_lock){....}, at: [<00000000b2f91fff>] __rds_conn_create+0xe46/0x1b50
[  130.413178] 
[  130.413178] stack backtrace:
[  130.417685] CPU: 1 PID: 31597 Comm: syz-executor2 Not tainted 4.15.0+ #307
[  130.424682] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
[  130.434012] Call Trace:
[  130.436584]  dump_stack+0x194/0x257
[  130.440189]  ? arch_local_irq_restore+0x53/0x53
[  130.444843]  lockdep_rcu_suspicious+0x123/0x170
[  130.449503]  ___might_sleep+0x385/0x470
[  130.453459]  ? trace_event_raw_event_sched_switch+0x810/0x810
[  130.459325]  ? debug_mutex_init+0x1c/0x60
[  130.463463]  ? trace_hardirqs_on_caller+0x421/0x5c0
[  130.468467]  __might_sleep+0x95/0x190
[  130.472247]  kmem_cache_alloc+0x2a2/0x760
[  130.476372]  ? lock_acquire+0x1d5/0x580
[  130.480320]  ? __rds_conn_create+0xe46/0x1b50
[  130.484788]  ? SyS_membarrier+0x700/0x700
[  130.488907]  ? init_timer_key+0x163/0x3f0
[  130.493045]  rds_tcp_conn_alloc+0xa7/0x4e0
[  130.497266]  ? rds_tcp_conn_free+0x2d0/0x2d0
[  130.501649]  ? rds_cmsg_atomic+0xff0/0xff0
[  130.505858]  ? __lockdep_init_map+0xe4/0x650
[  130.510240]  ? rds_cmsg_atomic+0xff0/0xff0
[  130.514451]  __rds_conn_create+0x112f/0x1b50
[  130.518851]  ? rds_conn_drop+0xb0/0xb0
[  130.522720]  ? trace_hardirqs_on_caller+0x421/0x5c0
[  130.527714]  ? trace_hardirqs_on_thunk+0x1a/0x1c
[  130.532446]  ? __raw_spin_lock_init+0x1c/0x100
[  130.537011]  ? trace_hardirqs_on_caller+0x421/0x5c0
[  130.542022]  ? __lockdep_init_map+0xe4/0x650
[  130.546415]  ? lockdep_init_map+0x9/0x10
[  130.550450]  ? __init_waitqueue_head+0x97/0x140
[  130.555091]  ? init_wait_entry+0x1b0/0x1b0
[  130.559306]  ? lockdep_init_map+0x9/0x10
[  130.563347]  ? rds_message_alloc+0x28c/0x330
[  130.567730]  ? rds_message_next_extension+0x210/0x210
[  130.572896]  ? rds_rdma_extra_size+0x205/0x2b0
[  130.577459]  ? rds_atomic_free_op+0x330/0x330
[  130.581929]  ? lock_sock_nested+0x91/0x110
[  130.586157]  rds_conn_create_outgoing+0x3f/0x50
[  130.590815]  rds_sendmsg+0xda3/0x2390
[  130.594614]  ? rds_send_drop_to+0x19d0/0x19d0
[  130.599101]  ? find_held_lock+0x35/0x1d0
[  130.603149]  ? sock_has_perm+0x2a4/0x420
[  130.607201]  ? selinux_secmark_relabel_packet+0xc0/0xc0
[  130.612542]  ? lock_downgrade+0x980/0x980
[  130.616676]  ? lock_release+0xa40/0xa40
[  130.620637]  ? selinux_socket_sendmsg+0x36/0x40
[  130.625282]  ? security_socket_sendmsg+0x89/0xb0
[  130.630020]  ? rds_send_drop_to+0x19d0/0x19d0
[  130.634500]  sock_sendmsg+0xca/0x110
[  130.638192]  ___sys_sendmsg+0x767/0x8b0
[  130.642147]  ? copy_msghdr_from_user+0x590/0x590
[  130.646882]  ? __schedule+0x8ea/0x2040
[  130.650751]  ? __sched_text_start+0x8/0x8
[  130.654886]  ? __fget_light+0x2b2/0x3c0
[  130.658836]  ? fget_raw+0x20/0x20
[  130.662267]  ? __might_sleep+0x95/0x190
[  130.666241]  __sys_sendmsg+0xe5/0x210
[  130.670020]  ? __sys_sendmsg+0xe5/0x210
[  130.673974]  ? SyS_shutdown+0x290/0x290
[  130.677950]  ? exit_to_usermode_loop+0x8c/0x2f0
[  130.682606]  ? trace_event_raw_event_sys_exit+0x260/0x260
[  130.688123]  SyS_sendmsg+0x2d/0x50
[  130.691639]  ? __sys_sendmsg+0x210/0x210
[  130.695674]  do_syscall_64+0x282/0x940
[  130.699538]  ? __do_page_fault+0xc90/0xc90
[  130.703756]  ? finish_task_switch+0x1e2/0x890
[  130.708227]  ? finish_task_switch+0x1b9/0x890
[  130.712701]  ? syscall_return_slowpath+0x550/0x550
[  130.717608]  ? syscall_return_slowpath+0x2ac/0x550
[  130.722516]  ? prepare_exit_to_usermode+0x350/0x350
[  130.727508]  ? entry_SYSCALL_64_after_hwframe+0x36/0x9b
[  130.732850]  ? trace_hardirqs_off_thunk+0x1a/0x1c
[  130.737673]  entry_SYSCALL_64_after_hwframe+0x26/0x9b
[  130.742835] RIP: 0033:0x4537d9
[  130.745997] RSP: 002b:00007f13a9e2cc58 EFLAGS: 00000212 ORIG_RAX: 000000000000002e
[  130.753686] RAX: ffffffffffffffda RBX: 000000000071bea0 RCX: 00000000004537d9
[  130.760936] RDX: 0000000000000000 RSI: 0000000020006fc8 RDI: 0000000000000013
[  130.768188] RBP: 00000000000004b5 R08: 0000000000000000 R09: 0000000000000000
[  130.775431] R10: 0000000000000000 R11: 0000000000000212 R12: 00000000006f6198
[  130.782672] R13: 00000000ffffffff R14: 00007f13a9e2d6d4 R15: 0000000000000000
[  130.789977] BUG: sleeping function called from invalid context at mm/slab.h:420
[  130.797427] in_atomic(): 1, irqs_disabled(): 0, pid: 31597, name: syz-executor2
[  130.804874] 1 lock held by syz-executor2/31597:
[  130.809534]  #0:  (rcu_read_lock){....}, at: [<00000000b2f91fff>] __rds_conn_create+0xe46/0x1b50
[  130.818487] CPU: 1 PID: 31597 Comm: syz-executor2 Not tainted 4.15.0+ #307
[  130.825481] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
[  130.834808] Call Trace:
[  130.837373]  dump_stack+0x194/0x257
[  130.840983]  ? arch_local_irq_restore+0x53/0x53
[  130.845634]  ? print_lock+0x9f/0xa2
[  130.849245]  ? lockdep_print_held_locks+0xc4/0x130
[  130.854156]  ___might_sleep+0x2b2/0x470
[  130.858106]  ? trace_event_raw_event_sched_switch+0x810/0x810
[  130.863960]  ? debug_mutex_init+0x1c/0x60
[  130.868085]  ? trace_hardirqs_on_caller+0x421/0x5c0
[  130.873084]  __might_sleep+0x95/0x190
[  130.876862]  kmem_cache_alloc+0x2a2/0x760
[  130.880985]  ? lock_acquire+0x1d5/0x580
[  130.884932]  ? __rds_conn_create+0xe46/0x1b50
[  130.889402]  ? SyS_membarrier+0x700/0x700
[  130.893522]  ? init_timer_key+0x163/0x3f0
[  130.897648]  rds_tcp_conn_alloc+0xa7/0x4e0
[  130.901859]  ? rds_tcp_conn_free+0x2d0/0x2d0
[  130.906241]  ? rds_cmsg_atomic+0xff0/0xff0
[  130.910452]  ? __lockdep_init_map+0xe4/0x650
[  130.914833]  ? rds_cmsg_atomic+0xff0/0xff0
[  130.919046]  __rds_conn_create+0x112f/0x1b50
[  130.923448]  ? rds_conn_drop+0xb0/0xb0
[  130.927310]  ? trace_hardirqs_on_caller+0x421/0x5c0
[  130.932300]  ? trace_hardirqs_on_thunk+0x1a/0x1c
[  130.937040]  ? __raw_spin_lock_init+0x1c/0x100
[  130.941615]  ? trace_hardirqs_on_caller+0x421/0x5c0
[  130.946610]  ? __lockdep_init_map+0xe4/0x650
[  130.950994]  ? lockdep_init_map+0x9/0x10
[  130.955039]  ? __init_waitqueue_head+0x97/0x140
[  130.959683]  ? init_wait_entry+0x1b0/0x1b0
[  130.963893]  ? lockdep_init_map+0x9/0x10
[  130.967931]  ? rds_message_alloc+0x28c/0x330
[  130.972310]  ? rds_message_next_extension+0x210/0x210
[  130.977474]  ? rds_rdma_extra_size+0x205/0x2b0
[  130.982042]  ? rds_atomic_free_op+0x330/0x330
[  130.986511]  ? lock_sock_nested+0x91/0x110
[  130.990725]  rds_conn_create_outgoing+0x3f/0x50
[  130.995369]  rds_sendmsg+0xda3/0x2390
[  130.999177]  ? rds_send_drop_to+0x19d0/0x19d0
[  131.003667]  ? find_held_lock+0x35/0x1d0
[  131.007706]  ? sock_has_perm+0x2a4/0x420
[  131.011744]  ? selinux_secmark_relabel_packet+0xc0/0xc0
[  131.017080]  ? lock_downgrade+0x980/0x980
[  131.021202]  ? lock_release+0xa40/0xa40
[  131.025165]  ? selinux_socket_sendmsg+0x36/0x40
[  131.029808]  ? security_socket_sendmsg+0x89/0xb0
[  131.034539]  ? rds_send_drop_to+0x19d0/0x19d0
[  131.039014]  sock_sendmsg+0xca/0x110
[  131.042711]  ___sys_sendmsg+0x767/0x8b0
[  131.046664]  ? copy_msghdr_from_user+0x590/0x590
[  131.051393]  ? __schedule+0x8ea/0x2040
[  131.055259]  ? __sched_text_start+0x8/0x8
[  131.059387]  ? __fget_light+0x2b2/0x3c0
[  131.063336]  ? fget_raw+0x20/0x20
[  131.066769]  ? __might_sleep+0x95/0x190
[  131.070741]  __sys_sendmsg+0xe5/0x210
[  131.074516]  ? __sys_sendmsg+0xe5/0x210
[  131.078466]  ? SyS_shutdown+0x290/0x290
[  131.082423]  ? exit_to_usermode_loop+0x8c/0x2f0
[  131.087080]  ? trace_event_raw_event_sys_exit+0x260/0x260
[  131.092600]  SyS_sendmsg+0x2d/0x50
[  131.096111]  ? __sys_sendmsg+0x210/0x210
[  131.100146]  do_syscall_64+0x282/0x940
[  131.104008]  ? __do_page_fault+0xc90/0xc90
[  131.108222]  ? finish_task_switch+0x1e2/0x890
[  131.112686]  ? finish_task_switch+0x1b9/0x890
[  131.117156]  ? syscall_return_slowpath+0x550/0x550
[  131.122057]  ? syscall_return_slowpath+0x2ac/0x550
[  131.126958]  ? prepare_exit_to_usermode+0x350/0x350
[  131.131950]  ? entry_SYSCALL_64_after_hwframe+0x36/0x9b
[  131.137291]  ? trace_hardirqs_off_thunk+0x1a/0x1c
[  131.142115]  entry_SYSCALL_64_after_hwframe+0x26/0x9b
[  131.147277] RIP: 0033:0x4537d9
[  131.150440] RSP: 002b:00007f13a9e2cc58 EFLAGS: 00000212 ORIG_RAX: 000000000000002e
