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

[   40.467154] =============================
[   40.471339] WARNING: suspicious RCU usage
[   40.475501] 4.15.0+ #307 Not tainted
[   40.479229] -----------------------------
[   40.483386] ./include/linux/rcupdate.h:302 Illegal context switch in RCU read-side critical section!
[   40.492665] 
[   40.492665] other info that might help us debug this:
[   40.492665] 
[   40.500828] 
[   40.500828] rcu_scheduler_active = 2, debug_locks = 1
[   40.507516] 1 lock held by syz-executor1/6886:
[   40.512120]  #0:  (rcu_read_lock){....}, at: [<00000000d1a2b4e9>] __rds_conn_create+0xe46/0x1b50
[   40.521101] 
[   40.521101] stack backtrace:
[   40.525627] CPU: 1 PID: 6886 Comm: syz-executor1 Not tainted 4.15.0+ #307
[   40.532541] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
[   40.541884] Call Trace:
[   40.544466]  dump_stack+0x194/0x257
[   40.548094]  ? arch_local_irq_restore+0x53/0x53
[   40.552780]  lockdep_rcu_suspicious+0x123/0x170
[   40.557455]  ___might_sleep+0x385/0x470
[   40.561428]  ? trace_event_raw_event_sched_switch+0x810/0x810
[   40.567307]  ? __debug_object_init+0x235/0x1040
[   40.571977]  ? debug_mutex_init+0x1c/0x60
[   40.576132]  __might_sleep+0x95/0x190
[   40.579937]  kmem_cache_alloc_trace+0x299/0x740
[   40.584602]  ? lock_acquire+0x1d5/0x580
[   40.588570]  ? lock_acquire+0x1d5/0x580
[   40.592538]  ? __rds_conn_create+0xe46/0x1b50
[   40.597039]  rds_loop_conn_alloc+0xc8/0x380
[   40.601362]  ? rds_loop_conn_free+0x290/0x290
[   40.605856]  ? __init_waitqueue_head+0x97/0x140
[   40.610524]  ? rcutorture_record_progress+0x10/0x10
[   40.615536]  ? __lockdep_init_map+0xe4/0x650
[   40.619950]  __rds_conn_create+0x112f/0x1b50
[   40.624387]  ? rds_conn_drop+0xb0/0xb0
[   40.628294]  ? __raw_spin_lock_init+0x1c/0x100
[   40.632878]  ? trace_hardirqs_on_caller+0x421/0x5c0
[   40.637897]  ? __lockdep_init_map+0xe4/0x650
[   40.642304]  ? lockdep_init_map+0x9/0x10
[   40.646362]  ? __init_waitqueue_head+0x97/0x140
[   40.651029]  ? init_wait_entry+0x1b0/0x1b0
[   40.655278]  ? lockdep_init_map+0x9/0x10
[   40.659351]  ? rds_message_alloc+0x28c/0x330
[   40.663746]  ? rds_message_next_extension+0x210/0x210
[   40.668923]  ? trace_hardirqs_on+0xd/0x10
[   40.673073]  ? _raw_spin_unlock_bh+0x30/0x40
[   40.677475]  ? __release_sock+0x360/0x360
[   40.681597]  ? lock_sock_nested+0x91/0x110
[   40.685815]  rds_conn_create_outgoing+0x3f/0x50
[   40.690471]  rds_sendmsg+0xda3/0x2390
[   40.694248]  ? avc_has_perm+0x43e/0x680
[   40.698224]  ? rds_send_drop_to+0x19d0/0x19d0
[   40.702696]  ? iterate_fd+0x3f0/0x3f0
[   40.706477]  ? debug_check_no_locks_freed+0x3c0/0x3c0
[   40.711646]  ? find_held_lock+0x35/0x1d0
[   40.715690]  ? sock_has_perm+0x2a4/0x420
[   40.719737]  ? selinux_secmark_relabel_packet+0xc0/0xc0
[   40.725077]  ? lock_release+0xa02/0xa40
[   40.729034]  ? trace_event_raw_event_sched_switch+0x810/0x810
[   40.734896]  ? __check_object_size+0x8b/0x530
[   40.739376]  ? __might_sleep+0x95/0x190
[   40.743330]  ? selinux_socket_sendmsg+0x36/0x40
[   40.747972]  ? security_socket_sendmsg+0x89/0xb0
[   40.752706]  ? rds_send_drop_to+0x19d0/0x19d0
[   40.757176]  sock_sendmsg+0xca/0x110
[   40.760869]  SYSC_sendto+0x361/0x5c0
[   40.764562]  ? SYSC_connect+0x4a0/0x4a0
[   40.768511]  ? trace_event_raw_event_sched_switch+0x810/0x810
[   40.774369]  ? find_held_lock+0x35/0x1d0
[   40.778409]  ? kcov_close+0x20/0x20
[   40.782013]  ? _raw_spin_unlock+0x22/0x30
[   40.786142]  ? kcov_ioctl+0x56/0x1b0
[   40.789834]  ? do_vfs_ioctl+0x486/0x1520
[   40.793898]  ? selinux_capable+0x40/0x40
[   40.797940]  ? trace_hardirqs_on+0xd/0x10
[   40.802077]  ? security_file_ioctl+0x7d/0xb0
[   40.806460]  ? security_file_ioctl+0x89/0xb0
[   40.810848]  SyS_sendto+0x40/0x50
[   40.814274]  ? SyS_getpeername+0x30/0x30
[   40.818311]  do_syscall_64+0x282/0x940
[   40.822175]  ? finish_task_switch+0x5af/0x890
[   40.826651]  ? syscall_return_slowpath+0x550/0x550
[   40.831554]  ? syscall_return_slowpath+0x2ac/0x550
[   40.836459]  ? prepare_exit_to_usermode+0x350/0x350
[   40.841451]  ? entry_SYSCALL_64_after_hwframe+0x36/0x9b
[   40.846797]  ? trace_hardirqs_off_thunk+0x1a/0x1c
[   40.851619]  entry_SYSCALL_64_after_hwframe+0x26/0x9b
[   40.856784] RIP: 0033:0x4537d9
[   40.859949] RSP: 002b:00007f726e79bc58 EFLAGS: 00000212 ORIG_RAX: 000000000000002c
[   40.867627] RAX: ffffffffffffffda RBX: 000000000071bf58 RCX: 00000000004537d9
[   40.874868] RDX: 0000000000000000 RSI: 0000000020fbffff RDI: 0000000000000013
[   40.882119] RBP: 00000000000004b9 R08: 0000000020fc9000 R09: 0000000000000010
[   40.889361] R10: 0000000000000000 R11: 0000000000000212 R12: 00000000006f61f8
[   40.896605] R13: 00000000ffffffff R14: 00007f726e79c6d4 R15: 0000000000000005
[   40.903911] BUG: sleeping function called from invalid context at mm/slab.h:420
[   40.911359] in_atomic(): 1, irqs_disabled(): 0, pid: 6886, name: syz-executor1
[   40.918722] 1 lock held by syz-executor1/6886:
[   40.923317]  #0:  (rcu_read_lock){....}, at: [<00000000d1a2b4e9>] __rds_conn_create+0xe46/0x1b50
[   40.932274] CPU: 1 PID: 6886 Comm: syz-executor1 Not tainted 4.15.0+ #307
[   40.939177] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
[   40.948511] Call Trace:
[   40.951086]  dump_stack+0x194/0x257
[   40.954687]  ? arch_local_irq_restore+0x53/0x53
[   40.959333]  ? print_lock+0x9f/0xa2
[   40.962935]  ? lockdep_print_held_locks+0xc4/0x130
[   40.967845]  ___might_sleep+0x2b2/0x470
[   40.971801]  ? trace_event_raw_event_sched_switch+0x810/0x810
[   40.977667]  ? __debug_object_init+0x235/0x1040
[   40.982313]  ? debug_mutex_init+0x1c/0x60
[   40.986440]  __might_sleep+0x95/0x190
[   40.990219]  kmem_cache_alloc_trace+0x299/0x740
[   40.994865]  ? lock_acquire+0x1d5/0x580
[   40.998813]  ? lock_acquire+0x1d5/0x580
[   41.002766]  ? __rds_conn_create+0xe46/0x1b50
[   41.007239]  rds_loop_conn_alloc+0xc8/0x380
[   41.011535]  ? rds_loop_conn_free+0x290/0x290
[   41.016006]  ? __init_waitqueue_head+0x97/0x140
[   41.020659]  ? rcutorture_record_progress+0x10/0x10
[   41.025648]  ? __lockdep_init_map+0xe4/0x650
[   41.030050]  __rds_conn_create+0x112f/0x1b50
[   41.034456]  ? rds_conn_drop+0xb0/0xb0
[   41.038327]  ? __raw_spin_lock_init+0x1c/0x100
[   41.042884]  ? trace_hardirqs_on_caller+0x421/0x5c0
[   41.047877]  ? __lockdep_init_map+0xe4/0x650
[   41.052269]  ? lockdep_init_map+0x9/0x10
[   41.056307]  ? __init_waitqueue_head+0x97/0x140
[   41.060950]  ? init_wait_entry+0x1b0/0x1b0
[   41.065161]  ? lockdep_init_map+0x9/0x10
[   41.069197]  ? rds_message_alloc+0x28c/0x330
[   41.073578]  ? rds_message_next_extension+0x210/0x210
[   41.078738]  ? trace_hardirqs_on+0xd/0x10
[   41.082866]  ? _raw_spin_unlock_bh+0x30/0x40
[   41.087259]  ? __release_sock+0x360/0x360
[   41.091378]  ? lock_sock_nested+0x91/0x110
[   41.095593]  rds_conn_create_outgoing+0x3f/0x50
[   41.100237]  rds_sendmsg+0xda3/0x2390
[   41.104011]  ? avc_has_perm+0x43e/0x680
[   41.107977]  ? rds_send_drop_to+0x19d0/0x19d0
[   41.112455]  ? iterate_fd+0x3f0/0x3f0
[   41.116232]  ? debug_check_no_locks_freed+0x3c0/0x3c0
[   41.121398]  ? find_held_lock+0x35/0x1d0
[   41.125462]  ? sock_has_perm+0x2a4/0x420
[   41.129502]  ? selinux_secmark_relabel_packet+0xc0/0xc0
[   41.134836]  ? lock_release+0xa02/0xa40
[   41.138785]  ? trace_event_raw_event_sched_switch+0x810/0x810
[   41.144642]  ? __check_object_size+0x8b/0x530
[   41.149124]  ? __might_sleep+0x95/0x190
[   41.153076]  ? selinux_socket_sendmsg+0x36/0x40
[   41.157717]  ? security_socket_sendmsg+0x89/0xb0
[   41.162447]  ? rds_send_drop_to+0x19d0/0x19d0
[   41.166916]  sock_sendmsg+0xca/0x110
[   41.170607]  SYSC_sendto+0x361/0x5c0
[   41.174299]  ? SYSC_connect+0x4a0/0x4a0
[   41.178245]  ? trace_event_raw_event_sched_switch+0x810/0x810
[   41.184110]  ? find_held_lock+0x35/0x1d0
[   41.188161]  ? kcov_close+0x20/0x20
[   41.191763]  ? _raw_spin_unlock+0x22/0x30
[   41.195890]  ? kcov_ioctl+0x56/0x1b0
[   41.199580]  ? do_vfs_ioctl+0x486/0x1520
[   41.203624]  ? selinux_capable+0x40/0x40
[   41.207665]  ? trace_hardirqs_on+0xd/0x10
[   41.211793]  ? security_file_ioctl+0x7d/0xb0
[   41.216174]  ? security_file_ioctl+0x89/0xb0
[   41.220559]  SyS_sendto+0x40/0x50
[   41.223994]  ? SyS_getpeername+0x30/0x30
[   41.228038]  do_syscall_64+0x282/0x940
[   41.231900]  ? finish_task_switch+0x5af/0x890
[   41.236370]  ? syscall_return_slowpath+0x550/0x550
[   41.241275]  ? syscall_return_slowpath+0x2ac/0x550
[   41.246180]  ? prepare_exit_to_usermode+0x350/0x350
[   41.251172]  ? entry_SYSCALL_64_after_hwframe+0x36/0x9b
[   41.256519]  ? trace_hardirqs_off_thunk+0x1a/0x1c
[   41.261347]  entry_SYSCALL_64_after_hwframe+0x26/0x9b
