blob: c1927b66dc5cd6b09f81b923ebbf240a1876b88c [file] [log] [blame]
# Note: 191-194 have the same root cause.
TITLE: possible deadlock in perf_trace_destroy
[ 25.878418] ======================================================
[ 25.884700] WARNING: possible circular locking dependency detected
[ 25.890983] 4.15.0-rc8+ #1 Not tainted
[ 25.894838] ------------------------------------------------------
[ 25.901158] syzkaller926009/3663 is trying to acquire lock:
[ 25.906832] (event_mutex){+.+.}, at: [<00000000df5c386a>] perf_trace_destroy+0x28/0x100
[ 25.915042]
[ 25.915042] but task is already holding lock:
[ 25.920978] (&event->child_mutex){+.+.}, at: [<00000000aedc3ceb>] perf_event_release_kernel+0x2ea/0xc10
[ 25.930582]
[ 25.930582] which lock already depends on the new lock.
[ 25.930582]
[ 25.938870]
[ 25.938870] the existing dependency chain (in reverse order) is:
[ 25.946457]
[ 25.946457] -> #5 (&event->child_mutex){+.+.}:
[ 25.952499] __mutex_lock+0x16f/0x1a80
[ 25.956875] mutex_lock_nested+0x16/0x20
[ 25.961428] perf_event_for_each_child+0x8a/0x150
[ 25.966759] perf_ioctl+0x35a/0x1430
[ 25.970962] do_vfs_ioctl+0x1b1/0x1520
[ 25.975341] SyS_ioctl+0x8f/0xc0
[ 25.979200] entry_SYSCALL_64_fastpath+0x29/0xa0
[ 25.984444]
[ 25.984444] -> #4 (&cpuctx_mutex){+.+.}:
[ 25.989958] __mutex_lock+0x16f/0x1a80
[ 25.994336] mutex_lock_nested+0x16/0x20
[ 25.998891] perf_event_init_cpu+0xb6/0x160
[ 26.003704] perf_event_init+0x4e9/0x549
[ 26.008256] start_kernel+0x4cc/0x819
[ 26.012547] x86_64_start_reservations+0x2a/0x2c
[ 26.017790] x86_64_start_kernel+0x77/0x7a
[ 26.022523] secondary_startup_64+0xa5/0xb0
[ 26.027330]
[ 26.027330] -> #3 (pmus_lock){+.+.}:
[ 26.032503] __mutex_lock+0x16f/0x1a80
[ 26.036878] mutex_lock_nested+0x16/0x20
[ 26.041435] perf_event_init_cpu+0x2f/0x160
[ 26.046253] cpuhp_invoke_callback+0x2ea/0x1d20
[ 26.051418] _cpu_up+0x216/0x510
[ 26.055274] do_cpu_up+0x73/0xa0
[ 26.059131] cpu_up+0x18/0x20
[ 26.062730] smp_init+0x13a/0x152
[ 26.066687] kernel_init_freeable+0x2fe/0x521
[ 26.071675] kernel_init+0x13/0x180
[ 26.075790] ret_from_fork+0x3a/0x50
[ 26.079992]
[ 26.079992] -> #2 (cpu_hotplug_lock.rw_sem){++++}:
[ 26.086378] cpus_read_lock+0x42/0x90
[ 26.090668] static_key_slow_inc+0x9d/0x3c0
[ 26.095480] tracepoint_probe_register_prio+0x80d/0x9a0
[ 26.101335] tracepoint_probe_register+0x2a/0x40
[ 26.106584] trace_event_reg+0x167/0x320
[ 26.111132] perf_trace_init+0x4ef/0xab0
[ 26.115682] perf_tp_event_init+0x7d/0xf0
[ 26.120321] perf_try_init_event+0xc9/0x1f0
[ 26.125131] perf_event_alloc+0x1cc6/0x2b00
[ 26.129940] SYSC_perf_event_open+0x84e/0x2e00
[ 26.135010] SyS_perf_event_open+0x39/0x50
[ 26.139737] entry_SYSCALL_64_fastpath+0x29/0xa0
[ 26.144980]
[ 26.144980] -> #1 (tracepoints_mutex){+.+.}:
[ 26.150846] __mutex_lock+0x16f/0x1a80
[ 26.155224] mutex_lock_nested+0x16/0x20
[ 26.159778] tracepoint_probe_register_prio+0xa0/0x9a0
[ 26.165543] tracepoint_probe_register+0x2a/0x40
[ 26.170795] trace_event_reg+0x167/0x320
[ 26.175351] perf_trace_init+0x4ef/0xab0
[ 26.179919] perf_tp_event_init+0x7d/0xf0
[ 26.184556] perf_try_init_event+0xc9/0x1f0
[ 26.189371] perf_event_alloc+0x1cc6/0x2b00
[ 26.194182] SYSC_perf_event_open+0x84e/0x2e00
[ 26.199256] SyS_perf_event_open+0x39/0x50
[ 26.203985] entry_SYSCALL_64_fastpath+0x29/0xa0
[ 26.209228]
[ 26.209228] -> #0 (event_mutex){+.+.}:
[ 26.214579] lock_acquire+0x1d5/0x580
[ 26.218872] __mutex_lock+0x16f/0x1a80
[ 26.223250] mutex_lock_nested+0x16/0x20
[ 26.227812] perf_trace_destroy+0x28/0x100
[ 26.232543] tp_perf_event_destroy+0x15/0x20
[ 26.237440] _free_event+0x3bd/0x10f0
[ 26.241729] free_event+0x84/0x150
[ 26.245758] perf_event_release_kernel+0x54e/0xc10
[ 26.251180] perf_release+0x37/0x50
[ 26.255301] __fput+0x327/0x7e0
[ 26.259069] ____fput+0x15/0x20
[ 26.262840] task_work_run+0x199/0x270
[ 26.267221] do_exit+0x9bb/0x1ad0
[ 26.271162] do_group_exit+0x149/0x400
[ 26.275538] get_signal+0x73f/0x16c0
[ 26.279750] do_signal+0x90/0x1eb0
[ 26.283781] exit_to_usermode_loop+0x214/0x310
[ 26.288860] syscall_return_slowpath+0x490/0x550
[ 26.294113] entry_SYSCALL_64_fastpath+0x9e/0xa0
[ 26.299354]
[ 26.299354] other info that might help us debug this:
[ 26.299354]
[ 26.307473] Chain exists of:
[ 26.307473] event_mutex --> &cpuctx_mutex --> &event->child_mutex
[ 26.307473]
[ 26.318195] Possible unsafe locking scenario:
[ 26.318195]
[ 26.324219] CPU0 CPU1
[ 26.328863] ---- ----
[ 26.333496] lock(&event->child_mutex);
[ 26.337526] lock(&cpuctx_mutex);
[ 26.343549] lock(&event->child_mutex);
[ 26.350096] lock(event_mutex);
[ 26.353429]
[ 26.353429] *** DEADLOCK ***
[ 26.353429]
[ 26.359456] 2 locks held by syzkaller926009/3663:
[ 26.364266] #0: (&ctx->mutex){+.+.}, at: [<000000006557d8ef>] perf_event_release_kernel+0x2dc/0xc10
[ 26.373607] #1: (&event->child_mutex){+.+.}, at: [<00000000aedc3ceb>] perf_event_release_kernel+0x2ea/0xc10
[ 26.383635]
[ 26.383635] stack backtrace:
[ 26.388105] CPU: 0 PID: 3663 Comm: syzkaller926009 Not tainted 4.15.0-rc8+ #1
[ 26.395350] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
[ 26.404672] Call Trace:
[ 26.407237] dump_stack+0x194/0x257
[ 26.410843] ? arch_local_irq_restore+0x53/0x53
[ 26.415485] print_circular_bug.isra.37+0x2cd/0x2dc
[ 26.420470] ? save_trace+0xe0/0x2b0
[ 26.424158] __lock_acquire+0x30a8/0x3e00
[ 26.428277] ? debug_check_no_locks_freed+0x3c0/0x3c0
[ 26.433443] ? debug_check_no_locks_freed+0x3c0/0x3c0
[ 26.438602] ? perf_trace_lock_acquire+0xe3/0x980
[ 26.443413] ? __lock_acquire+0x2d15/0x3e00
[ 26.447703] ? perf_trace_lock+0x900/0x900
[ 26.451910] ? perf_trace_lock_acquire+0xe3/0x980
[ 26.456720] ? check_noncircular+0x20/0x20
[ 26.460925] ? perf_trace_lock+0x900/0x900
[ 26.465128] ? __lock_acquire+0x664/0x3e00
[ 26.469332] ? check_noncircular+0x20/0x20
[ 26.473539] ? lock_acquire+0x1d5/0x580
[ 26.477481] ? lock_acquire+0x1d5/0x580
[ 26.481427] lock_acquire+0x1d5/0x580
[ 26.485198] ? lock_acquire+0x1d5/0x580
[ 26.489147] ? perf_trace_destroy+0x28/0x100
[ 26.493532] ? lock_release+0xa40/0xa40
[ 26.497475] ? check_noncircular+0x20/0x20
[ 26.501683] ? rcu_note_context_switch+0x710/0x710
[ 26.506588] ? __might_sleep+0x95/0x190
[ 26.510535] ? perf_trace_destroy+0x28/0x100
[ 26.514918] __mutex_lock+0x16f/0x1a80
[ 26.518785] ? perf_trace_destroy+0x28/0x100
[ 26.523170] ? perf_trace_destroy+0x28/0x100
[ 26.527558] ? find_held_lock+0x35/0x1d0
[ 26.531596] ? mutex_lock_io_nested+0x1900/0x1900
[ 26.536413] ? perf_event_detach_bpf_prog+0x275/0x3d0
[ 26.541576] ? lock_downgrade+0x980/0x980
[ 26.545698] ? __perf_remove_from_context+0x19d/0x3e0
[ 26.550862] ? mark_held_locks+0xaf/0x100
[ 26.554983] ? generic_exec_single+0x362/0x5b0
[ 26.559536] ? __mutex_unlock_slowpath+0xe9/0xac0
[ 26.564358] ? trace_hardirqs_on+0xd/0x10
[ 26.568474] ? generic_exec_single+0x18a/0x5b0
[ 26.573025] ? wait_for_completion+0x770/0x770
[ 26.577582] ? __might_sleep+0x95/0x190
[ 26.581527] ? perf_event_release_kernel+0x2ea/0xc10
[ 26.586601] ? __mutex_lock+0x16f/0x1a80
[ 26.590631] ? perf_event_release_kernel+0x2ea/0xc10
[ 26.595706] ? check_noncircular+0x20/0x20
[ 26.600611] ? perf_addr_filters_splice+0x18f/0x810
[ 26.605599] ? smp_call_function_single+0x3ae/0x560
[ 26.610585] ? free_filters_list+0x2f0/0x2f0
[ 26.614971] ? mutex_unlock+0xd/0x10
[ 26.618654] ? __lock_is_held+0xb6/0x140
[ 26.622685] mutex_lock_nested+0x16/0x20
[ 26.626717] ? mutex_lock_nested+0x16/0x20
[ 26.630924] perf_trace_destroy+0x28/0x100
[ 26.635132] ? perf_tp_event_init+0xf0/0xf0
[ 26.639422] tp_perf_event_destroy+0x15/0x20
[ 26.643799] _free_event+0x3bd/0x10f0
[ 26.647568] ? ring_buffer_attach+0x830/0x830
[ 26.652034] ? event_function_call+0x2f5/0x5a0
[ 26.656589] ? list_del_event+0xb30/0xb30
[ 26.660706] ? task_function_call+0x220/0x220
[ 26.665174] ? lock_downgrade+0x980/0x980
[ 26.669302] ? list_del_event+0xb30/0xb30
[ 26.673418] free_event+0x84/0x150
[ 26.676929] ? _free_event+0x10f0/0x10f0
[ 26.680964] perf_event_release_kernel+0x54e/0xc10
[ 26.685863] ? put_event+0x30/0x30
[ 26.689374] ? mntput_no_expire+0x130/0xa90
[ 26.693666] ? lock_downgrade+0x980/0x980
[ 26.697782] ? lock_release+0xa40/0xa40
[ 26.701731] ? __dentry_kill+0x487/0x6d0
[ 26.705774] ? locks_remove_file+0x3fa/0x5a0
[ 26.710151] ? fcntl_setlk+0x10c0/0x10c0
[ 26.714185] ? fsnotify+0x7b3/0x1140
[ 26.717869] ? fsnotify_first_mark+0x2b0/0x2b0
[ 26.722419] ? perf_event_release_kernel+0xc10/0xc10
[ 26.727493] perf_release+0x37/0x50
[ 26.731092] __fput+0x327/0x7e0
[ 26.734346] ? fput+0x140/0x140
[ 26.737599] ? trace_event_raw_event_sched_switch+0x800/0x800
[ 26.743458] ? _raw_spin_unlock_irq+0x27/0x70
[ 26.747924] ____fput+0x15/0x20
[ 26.751177] task_work_run+0x199/0x270
[ 26.755045] ? task_work_cancel+0x210/0x210
[ 26.759358] ? _raw_spin_unlock+0x22/0x30
[ 26.763480] ? switch_task_namespaces+0x87/0xc0
[ 26.768124] do_exit+0x9bb/0x1ad0
[ 26.771546] ? mm_update_next_owner+0x930/0x930
[ 26.776184] ? debug_check_no_locks_freed+0x3c0/0x3c0
[ 26.781347] ? perf_trace_run_bpf_submit+0x20d/0x330
[ 26.786419] ? perf_tp_event+0xae0/0xae0
[ 26.790447] ? find_held_lock+0x35/0x1d0
[ 26.794481] ? memset+0x31/0x40
[ 26.797817] ? perf_trace_lock_acquire+0x532/0x980
[ 26.802717] ? lock_release+0xa40/0xa40
[ 26.806661] ? perf_trace_lock+0x900/0x900
[ 26.810867] ? check_noncircular+0x20/0x20
[ 26.815074] ? drop_futex_key_refs.isra.12+0x63/0xb0
[ 26.820146] ? futex_wait+0x6a9/0x9a0
[ 26.823922] ? find_held_lock+0x35/0x1d0
[ 26.827957] ? get_signal+0x7ae/0x16c0
[ 26.831823] ? lock_downgrade+0x980/0x980
[ 26.835948] do_group_exit+0x149/0x400
[ 26.839807] ? do_raw_spin_trylock+0x190/0x190
[ 26.844358] ? SyS_exit+0x30/0x30
[ 26.847783] ? _raw_spin_unlock_irq+0x27/0x70
[ 26.852254] ? trace_hardirqs_on_caller+0x421/0x5c0
[ 26.857240] get_signal+0x73f/0x16c0
[ 26.860931] ? ptrace_notify+0x130/0x130
[ 26.864965] ? exit_robust_list+0x240/0x240
[ 26.869256] ? __fd_install+0x288/0x740
[ 26.873209] ? __mutex_unlock_slowpath+0xe9/0xac0
[ 26.878029] ? get_unused_fd_flags+0x190/0x190
[ 26.882587] ? wait_for_completion+0x770/0x770
[ 26.887141] ? lock_downgrade+0x980/0x980
[ 26.891258] do_signal+0x90/0x1eb0
[ 26.894766] ? mark_held_locks+0xaf/0x100
[ 26.898887] ? _raw_spin_unlock_irqrestore+0x31/0xba
[ 26.904053] ? setup_sigcontext+0x7d0/0x7d0
[ 26.908345] ? fd_install+0x4d/0x60
[ 26.911942] ? SYSC_perf_event_open+0x4c3/0x2e00
[ 26.916666] ? vmacache_update+0xfe/0x130
[ 26.920785] ? perf_event_set_output+0x5a0/0x5a0
[ 26.925515] ? exit_to_usermode_loop+0x8c/0x310
[ 26.930156] exit_to_usermode_loop+0x214/0x310
[ 26.934710] ? trace_event_raw_event_sys_exit+0x260/0x260
[ 26.940219] syscall_return_slowpath+0x490/0x550
[ 26.944944] ? prepare_exit_to_usermode+0x340/0x340
[ 26.949931] ? entry_SYSCALL_64_fastpath+0x73/0xa0
[ 26.954832] ? trace_hardirqs_on_caller+0x421/0x5c0
[ 26.959821] ? trace_hardirqs_on_thunk+0x1a/0x1c
[ 26.964550] entry_SYSCALL_64_fastpath+0x9e/0xa0
[ 26.969273] RIP: 0033:0x445749
[ 26.972432] RSP: 002b:00007febf72a3db8 EFLAGS: 00000246 ORIG_RAX: 00000000000000ca
[ 26.980112] RAX: fffffffffffffe00 RBX: 00000000006dac3c RCX: 0000000000445749
[ 26.987369] RDX: 0000000000000000