[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4a59b396.a7de.196820a736f.Coremail.luckd0g@163.com>
Date: Tue, 29 Apr 2025 22:54:05 +0800 (CST)
From: "Jianzhou Zhao" <luckd0g@....com>
To: stable@...r.kernel.org
Cc: alexander.shishkin@...ux.intel.com, peterz@...radead.org,
mingo@...hat.com, acme@...nel.org, namhyung@...nel.org,
mark.rutland@....com, jolsa@...nel.org, irogers@...gle.com,
adrian.hunter@...el.com, kan.liang@...ux.intel.com,
linux-perf-users@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re:possible deadlock in perf_ctx_lock in linux6.12.25(longterm
maintenance)
When I attempted to reproduce the bug using the crashed log with the help of syzkaller, the following reproduction program was generated. Hope this is helpful to you.
#define _GNU_SOURCE
#include <endian.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>
#define BITMASK(bf_off, bf_len) (((1ull << (bf_len)) - 1) << (bf_off))
#define STORE_BY_BITMASK(type, htobe, addr, val, bf_off, bf_len) \
*(type*)(addr) = \
htobe((htobe(*(type*)(addr)) & ~BITMASK((bf_off), (bf_len))) | \
(((type)(val) << (bf_off)) & BITMASK((bf_off), (bf_len))))
int main(void)
{
syscall(__NR_mmap, /*addr=*/0x1ffffffff000ul, /*len=*/0x1000ul, /*prot=*/0ul,
/*flags=MAP_FIXED|MAP_ANONYMOUS|MAP_PRIVATE*/ 0x32ul,
/*fd=*/(intptr_t)-1, /*offset=*/0ul);
syscall(__NR_mmap, /*addr=*/0x200000000000ul, /*len=*/0x1000000ul,
/*prot=PROT_WRITE|PROT_READ|PROT_EXEC*/ 7ul,
/*flags=MAP_FIXED|MAP_ANONYMOUS|MAP_PRIVATE*/ 0x32ul,
/*fd=*/(intptr_t)-1, /*offset=*/0ul);
syscall(__NR_mmap, /*addr=*/0x200001000000ul, /*len=*/0x1000ul, /*prot=*/0ul,
/*flags=MAP_FIXED|MAP_ANONYMOUS|MAP_PRIVATE*/ 0x32ul,
/*fd=*/(intptr_t)-1, /*offset=*/0ul);
const char* reason;
(void)reason;
if (write(1, "executing program\n", sizeof("executing program\n") - 1)) {
}
*(uint32_t*)0x200000000000 = 2;
*(uint32_t*)0x200000000004 = 0x80;
*(uint8_t*)0x200000000008 = 0xef;
*(uint8_t*)0x200000000009 = 0;
*(uint8_t*)0x20000000000a = 0;
*(uint8_t*)0x20000000000b = 0;
*(uint32_t*)0x20000000000c = 0;
*(uint64_t*)0x200000000010 = 0;
*(uint64_t*)0x200000000018 = 0;
*(uint64_t*)0x200000000020 = 0;
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 0, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 1, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 2, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 3, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 4, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 5, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 6, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 7, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 8, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 9, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 10, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 11, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 12, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 13, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 14, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 15, 2);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 17, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 18, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 19, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 20, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 21, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 22, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 23, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 24, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 25, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 26, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 27, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 28, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 29, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 30, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 31, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 32, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 33, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 34, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 35, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 36, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 37, 1);
STORE_BY_BITMASK(uint64_t, , 0x200000000028, 0, 38, 26);
*(uint32_t*)0x200000000030 = 0;
*(uint32_t*)0x200000000034 = 0;
*(uint64_t*)0x200000000038 = 0;
*(uint64_t*)0x200000000040 = 0;
*(uint64_t*)0x200000000048 = 0x6000;
*(uint64_t*)0x200000000050 = 0xfffffffffffffffd;
*(uint32_t*)0x200000000058 = 0;
*(uint32_t*)0x20000000005c = 0;
*(uint64_t*)0x200000000060 = 0;
*(uint32_t*)0x200000000068 = 0;
*(uint16_t*)0x20000000006c = 0x10;
*(uint16_t*)0x20000000006e = 0;
*(uint32_t*)0x200000000070 = 0;
*(uint32_t*)0x200000000074 = 0;
*(uint64_t*)0x200000000078 = 0;
syscall(__NR_perf_event_open, /*attr=*/0x200000000000ul, /*pid=*/0,
/*cpu=*/0ul, /*group=*/(intptr_t)-1, /*flags=*/0ul);
return 0;
}
At 2025-04-29 22:18:04, "Jianzhou Zhao" <luckd0g@....com> wrote:
>Hello, I found a potential bug titled " possible deadlock in perf_ctx_lock " with modified syzkaller in the Linux6.12.25(longterm maintenance, last updated on April 25, 2025)
>If you fix this issue, please add the following tag to the commit: Reported-by: Jianzhou Zhao <luckd0g@....com>, xingwei lee <xrivendell7@...il.com>
>The commit of the kernel is : ef4999852d307d38cfdecd91ed6892cc03beb9b8
>kernel config: https://syzkaller.appspot.com/text?tag=KernelConfig&x=55f8591b98dd132
>compiler: gcc version 11.4.0
>
>Unfortunately, I am unable to reproduce this bug.
>
>------------[ cut here ]-----------------------------------------
> TITLE: possible deadlock in perf_ctx_lock
>------------[ cut here ]------------
>------------[ cut here ]------------
>======================================================
>WARNING: possible circular locking dependency detected
>6.12.25 #3 Not tainted
>------------------------------------------------------
>syz.9.499/15835 is trying to acquire lock:
>ffffffff8dec35a0 (console_owner){-.-.}-{0:0}, at: console_trylock_spinning kernel/printk/printk.c:2029 [inline]
>ffffffff8dec35a0 (console_owner){-.-.}-{0:0}, at: vprintk_emit kernel/printk/printk.c:2406 [inline]
>ffffffff8dec35a0 (console_owner){-.-.}-{0:0}, at: vprintk_emit+0x377/0x6d0 kernel/printk/printk.c:2353
>
>but task is already holding lock:
>ffff88804ed2b818 (&ctx->lock){-...}-{2:2}, at: __perf_ctx_lock kernel/events/core.c:174 [inline]
>ffff88804ed2b818 (&ctx->lock){-...}-{2:2}, at: perf_ctx_lock+0x6a/0xe0 kernel/events/core.c:183
>
>which lock already depends on the new lock.
>
>
>the existing dependency chain (in reverse order) is:
>
>-> #5 (&ctx->lock){-...}-{2:2}:
> __raw_spin_lock include/linux/spinlock_api_smp.h:133 [inline]
> _raw_spin_lock+0x2e/0x40 kernel/locking/spinlock.c:154
> perf_event_context_sched_out kernel/events/core.c:3668 [inline]
> __perf_event_task_sched_out+0x4b3/0x18a0 kernel/events/core.c:3772
> perf_event_task_sched_out include/linux/perf_event.h:1547 [inline]
> prepare_task_switch kernel/sched/core.c:5136 [inline]
> context_switch kernel/sched/core.c:5279 [inline]
> __schedule+0x2250/0x5b20 kernel/sched/core.c:6710
> __schedule_loop kernel/sched/core.c:6787 [inline]
> schedule+0xe7/0x350 kernel/sched/core.c:6802
> futex_wait_queue+0x101/0x1f0 kernel/futex/waitwake.c:370
> __futex_wait+0x23d/0x3c0 kernel/futex/waitwake.c:669
> futex_wait+0xdc/0x370 kernel/futex/waitwake.c:697
> do_futex+0x250/0x360 kernel/futex/syscalls.c:102
> __do_sys_futex kernel/futex/syscalls.c:179 [inline]
> __se_sys_futex kernel/futex/syscalls.c:160 [inline]
> __x64_sys_futex+0x1c6/0x4c0 kernel/futex/syscalls.c:160
> do_syscall_x64 arch/x86/entry/common.c:52 [inline]
> do_syscall_64+0xcb/0x250 arch/x86/entry/common.c:83
> entry_SYSCALL_64_after_hwframe+0x77/0x7f
>
>-> #4 (&rq->__lock){-.-.}-{2:2}:
> _raw_spin_lock_nested+0x34/0x40 kernel/locking/spinlock.c:378
> raw_spin_rq_lock_nested+0x2f/0x120 kernel/sched/core.c:598
> raw_spin_rq_lock kernel/sched/sched.h:1515 [inline]
> task_rq_lock+0xd3/0x390 kernel/sched/core.c:700
> cgroup_move_task+0x70/0x220 kernel/sched/psi.c:1161
> css_set_move_task+0x280/0x570 kernel/cgroup/cgroup.c:898
> cgroup_post_fork+0x20c/0x9d0 kernel/cgroup/cgroup.c:6705
> copy_process+0x4bf6/0x8960 kernel/fork.c:2623
> kernel_clone+0xeb/0x8f0 kernel/fork.c:2809
> user_mode_thread+0xc9/0x110 kernel/fork.c:2887
> rest_init+0x23/0x2b0 init/main.c:712
> start_kernel+0x3dd/0x4c0 init/main.c:1105
> x86_64_start_reservations+0x18/0x30 arch/x86/kernel/head64.c:507
> x86_64_start_kernel+0xb3/0xc0 arch/x86/kernel/head64.c:488
> common_startup_64+0x13e/0x148
>
>-> #3 (&p->pi_lock){-.-.}-{2:2}:
> __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
> _raw_spin_lock_irqsave+0x3d/0x60 kernel/locking/spinlock.c:162
> class_raw_spinlock_irqsave_constructor include/linux/spinlock.h:551 [inline]
> try_to_wake_up+0xb1/0x14b0 kernel/sched/core.c:4168
> autoremove_wake_function+0x16/0x150 kernel/sched/wait.c:384
> __wake_up_common+0x135/0x1f0 kernel/sched/wait.c:89
> __wake_up_common_lock kernel/sched/wait.c:106 [inline]
> __wake_up+0x31/0x60 kernel/sched/wait.c:127
> tty_port_default_wakeup+0x2a/0x40 drivers/tty/tty_port.c:69
> serial8250_tx_chars+0x6a8/0x8a0 drivers/tty/serial/8250/8250_port.c:1821
> serial8250_handle_irq+0x6a2/0xbb0 drivers/tty/serial/8250/8250_port.c:1929
> serial8250_default_handle_irq+0x9a/0x210 drivers/tty/serial/8250/8250_port.c:1949
> serial8250_interrupt+0x103/0x210 drivers/tty/serial/8250/8250_core.c:86
> __handle_irq_event_percpu+0x22a/0x7b0 kernel/irq/handle.c:158
> handle_irq_event_percpu kernel/irq/handle.c:193 [inline]
> handle_irq_event+0xab/0x1e0 kernel/irq/handle.c:210
> handle_edge_irq+0x265/0xd10 kernel/irq/chip.c:831
> generic_handle_irq_desc include/linux/irqdesc.h:173 [inline]
> handle_irq arch/x86/kernel/irq.c:249 [inline]
> call_irq_handler arch/x86/kernel/irq.c:261 [inline]
> __common_interrupt+0xe0/0x250 arch/x86/kernel/irq.c:287
> common_interrupt+0xf2/0x110 arch/x86/kernel/irq.c:280
> asm_common_interrupt+0x26/0x40 arch/x86/include/asm/idtentry.h:693
> native_safe_halt arch/x86/include/asm/irqflags.h:48 [inline]
> pv_native_safe_halt+0x1e/0x30 arch/x86/kernel/paravirt.c:105
> arch_safe_halt arch/x86/include/asm/paravirt.h:112 [inline]
> default_idle+0x1d/0x30 arch/x86/kernel/process.c:747
> default_idle_call+0x6d/0xb0 kernel/sched/idle.c:117
> cpuidle_idle_call kernel/sched/idle.c:185 [inline]
> do_idle+0x318/0x3c0 kernel/sched/idle.c:326
> cpu_startup_entry+0x4f/0x60 kernel/sched/idle.c:424
> rest_init+0x16b/0x2b0 init/main.c:747
> start_kernel+0x3dd/0x4c0 init/main.c:1105
> x86_64_start_reservations+0x18/0x30 arch/x86/kernel/head64.c:507
> x86_64_start_kernel+0xb3/0xc0 arch/x86/kernel/head64.c:488
> common_startup_64+0x13e/0x148
>
>-> #2 (&tty->write_wait){-.-.}-{2:2}:
> __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
> _raw_spin_lock_irqsave+0x3d/0x60 kernel/locking/spinlock.c:162
> __wake_up_common_lock kernel/sched/wait.c:105 [inline]
> __wake_up+0x1c/0x60 kernel/sched/wait.c:127
> tty_port_default_wakeup+0x2a/0x40 drivers/tty/tty_port.c:69
> serial8250_tx_chars+0x6a8/0x8a0 drivers/tty/serial/8250/8250_port.c:1821
> serial8250_handle_irq+0x6a2/0xbb0 drivers/tty/serial/8250/8250_port.c:1929
> serial8250_default_handle_irq+0x9a/0x210 drivers/tty/serial/8250/8250_port.c:1949
> serial8250_interrupt+0x103/0x210 drivers/tty/serial/8250/8250_core.c:86
> __handle_irq_event_percpu+0x22a/0x7b0 kernel/irq/handle.c:158
> handle_irq_event_percpu kernel/irq/handle.c:193 [inline]
> handle_irq_event+0xab/0x1e0 kernel/irq/handle.c:210
> handle_edge_irq+0x265/0xd10 kernel/irq/chip.c:831
> generic_handle_irq_desc include/linux/irqdesc.h:173 [inline]
> handle_irq arch/x86/kernel/irq.c:249 [inline]
> call_irq_handler arch/x86/kernel/irq.c:261 [inline]
> __common_interrupt+0xe0/0x250 arch/x86/kernel/irq.c:287
> common_interrupt+0xf2/0x110 arch/x86/kernel/irq.c:280
> asm_common_interrupt+0x26/0x40 arch/x86/include/asm/idtentry.h:693
> native_safe_halt arch/x86/include/asm/irqflags.h:48 [inline]
> pv_native_safe_halt+0x1e/0x30 arch/x86/kernel/paravirt.c:105
> arch_safe_halt arch/x86/include/asm/paravirt.h:112 [inline]
> default_idle+0x1d/0x30 arch/x86/kernel/process.c:747
> default_idle_call+0x6d/0xb0 kernel/sched/idle.c:117
> cpuidle_idle_call kernel/sched/idle.c:185 [inline]
> do_idle+0x318/0x3c0 kernel/sched/idle.c:326
> cpu_startup_entry+0x4f/0x60 kernel/sched/idle.c:424
> rest_init+0x16b/0x2b0 init/main.c:747
> start_kernel+0x3dd/0x4c0 init/main.c:1105
> x86_64_start_reservations+0x18/0x30 arch/x86/kernel/head64.c:507
> x86_64_start_kernel+0xb3/0xc0 arch/x86/kernel/head64.c:488
> common_startup_64+0x13e/0x148
>
>-> #1 (&port_lock_key){-.-.}-{2:2}:
> __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
> _raw_spin_lock_irqsave+0x3d/0x60 kernel/locking/spinlock.c:162
> uart_port_lock_irqsave include/linux/serial_core.h:711 [inline]
> serial8250_console_write+0xb3e/0x19b0 drivers/tty/serial/8250/8250_port.c:3381
> console_emit_next_record kernel/printk/printk.c:3090 [inline]
> console_flush_all+0x767/0xc30 kernel/printk/printk.c:3178
> __console_flush_and_unlock kernel/printk/printk.c:3237 [inline]
> console_unlock+0xc3/0x1f0 kernel/printk/printk.c:3277
> vprintk_emit kernel/printk/printk.c:2407 [inline]
> vprintk_emit+0x4fb/0x6d0 kernel/printk/printk.c:2353
> vprintk+0x93/0xb0 kernel/printk/printk_safe.c:73
> _printk+0xbf/0x100 kernel/printk/printk.c:2432
> register_console+0xc11/0x11b0 kernel/printk/printk.c:4067
> univ8250_console_init+0x62/0x90 drivers/tty/serial/8250/8250_core.c:513
> console_init+0xcc/0x680 kernel/printk/printk.c:4260
> start_kernel+0x293/0x4c0 init/main.c:1040
> x86_64_start_reservations+0x18/0x30 arch/x86/kernel/head64.c:507
> x86_64_start_kernel+0xb3/0xc0 arch/x86/kernel/head64.c:488
> common_startup_64+0x13e/0x148
>
>-> #0 (console_owner){-.-.}-{0:0}:
> check_prev_add kernel/locking/lockdep.c:3161 [inline]
> check_prevs_add kernel/locking/lockdep.c:3280 [inline]
> validate_chain kernel/locking/lockdep.c:3904 [inline]
> __lock_acquire+0x2425/0x3b90 kernel/locking/lockdep.c:5202
> lock_acquire.part.0+0x11b/0x370 kernel/locking/lockdep.c:5825
> console_trylock_spinning kernel/printk/printk.c:2029 [inline]
> vprintk_emit kernel/printk/printk.c:2406 [inline]
> vprintk_emit+0x38c/0x6d0 kernel/printk/printk.c:2353
> vprintk+0x93/0xb0 kernel/printk/printk_safe.c:73
> _printk+0xbf/0x100 kernel/printk/printk.c:2432
> __report_bug lib/bug.c:195 [inline]
> report_bug+0x27c/0x500 lib/bug.c:219
> handle_bug+0xe5/0x180 arch/x86/kernel/traps.c:285
> exc_invalid_op+0x35/0x80 arch/x86/kernel/traps.c:309
> asm_exc_invalid_op+0x1a/0x20 arch/x86/include/asm/idtentry.h:621
> perf_trace_add+0x2da/0x390 kernel/trace/trace_event_perf.c:375
> event_sched_in+0x434/0xac0 kernel/events/core.c:2629
> group_sched_in kernel/events/core.c:2662 [inline]
> merge_sched_in+0x895/0x1570 kernel/events/core.c:3940
> visit_groups_merge.constprop.0.isra.0+0x6d2/0x1250 kernel/events/core.c:3885
> pmu_groups_sched_in kernel/events/core.c:3967 [inline]
> __pmu_ctx_sched_in kernel/events/core.c:3979 [inline]
> ctx_sched_in+0x5c1/0xa30 kernel/events/core.c:4030
> perf_event_sched_in+0x5d/0x90 kernel/events/core.c:2760
> perf_event_context_sched_in kernel/events/core.c:4077 [inline]
> __perf_event_task_sched_in+0x33a/0x6f0 kernel/events/core.c:4106
> perf_event_task_sched_in include/linux/perf_event.h:1524 [inline]
> finish_task_switch.isra.0+0x5f9/0xcb0 kernel/sched/core.c:5201
> context_switch kernel/sched/core.c:5335 [inline]
> __schedule+0x1156/0x5b20 kernel/sched/core.c:6710
> preempt_schedule_irq+0x51/0x90 kernel/sched/core.c:7032
> irqentry_exit+0x36/0x90 kernel/entry/common.c:354
> asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
> __sanitizer_cov_trace_pc+0x0/0x80 kernel/kcov.c:127
> rcu_read_unlock include/linux/rcupdate.h:878 [inline]
> count_memcg_events_mm.constprop.0+0x12a/0x330 include/linux/memcontrol.h:1046
> count_memcg_event_mm include/linux/memcontrol.h:1052 [inline]
> mm_account_fault mm/memory.c:5947 [inline]
> handle_mm_fault+0x5af/0xab0 mm/memory.c:6107
> do_user_addr_fault+0x61b/0x13a0 arch/x86/mm/fault.c:1338
> handle_page_fault arch/x86/mm/fault.c:1481 [inline]
> exc_page_fault+0x98/0x180 arch/x86/mm/fault.c:1539
> asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:623
>
>other info that might help us debug this:
>
>Chain exists of:
> console_owner --> &rq->__lock --> &ctx->lock
>
> Possible unsafe locking scenario:
>
> CPU0 CPU1
> ---- ----
> lock(&ctx->lock);
> lock(&rq->__lock);
> lock(&ctx->lock);
> lock(console_owner);
>
> *** DEADLOCK ***
>
>5 locks held by syz.9.499/15835:
> #0: ffff88804a983b68 (&vma->vm_lock->lock){++++}-{3:3}, at: vma_start_read include/linux/mm.h:704 [inline]
> #0: ffff88804a983b68 (&vma->vm_lock->lock){++++}-{3:3}, at: lock_vma_under_rcu+0x141/0x9a0 mm/memory.c:6247
> #1: ffffffff8dfb62a0 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:337 [inline]
> #1: ffffffff8dfb62a0 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:849 [inline]
> #1: ffffffff8dfb62a0 (rcu_read_lock){....}-{1:2}, at: count_memcg_events_mm.constprop.0+0x3a/0x330 include/linux/memcontrol.h:1042
> #2: ffffffff8dfb62a0 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:337 [inline]
> #2: ffffffff8dfb62a0 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:849 [inline]
> #2: ffffffff8dfb62a0 (rcu_read_lock){....}-{1:2}, at: perf_event_context_sched_in kernel/events/core.c:4039 [inline]
> #2: ffffffff8dfb62a0 (rcu_read_lock){....}-{1:2}, at: __perf_event_task_sched_in+0xd3/0x6f0 kernel/events/core.c:4106
> #3: ffff88802b837af8 (&cpuctx_lock){-.-.}-{2:2}, at: __perf_ctx_lock kernel/events/core.c:174 [inline]
> #3: ffff88802b837af8 (&cpuctx_lock){-.-.}-{2:2}, at: perf_ctx_lock+0x15/0xe0 kernel/events/core.c:181
> #4: ffff88804ed2b818 (&ctx->lock){-...}-{2:2}, at: __perf_ctx_lock kernel/events/core.c:174 [inline]
> #4: ffff88804ed2b818 (&ctx->lock){-...}-{2:2}, at: perf_ctx_lock+0x6a/0xe0 kernel/events/core.c:183
>
>stack backtrace:
>CPU: 0 UID: 0 PID: 15835 Comm: syz.9.499 Not tainted 6.12.25 #3
>Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
>Call Trace:
> <TASK>
> __dump_stack lib/dump_stack.c:94 [inline]
> dump_stack_lvl+0x116/0x1b0 lib/dump_stack.c:120
> print_circular_bug+0x406/0x5c0 kernel/locking/lockdep.c:2074
> check_noncircular+0x2f7/0x3e0 kernel/locking/lockdep.c:2206
> check_prev_add kernel/locking/lockdep.c:3161 [inline]
> check_prevs_add kernel/locking/lockdep.c:3280 [inline]
> validate_chain kernel/locking/lockdep.c:3904 [inline]
> __lock_acquire+0x2425/0x3b90 kernel/locking/lockdep.c:5202
> lock_acquire.part.0+0x11b/0x370 kernel/locking/lockdep.c:5825
> console_trylock_spinning kernel/printk/printk.c:2029 [inline]
> vprintk_emit kernel/printk/printk.c:2406 [inline]
> vprintk_emit+0x38c/0x6d0 kernel/printk/printk.c:2353
> vprintk+0x93/0xb0 kernel/printk/printk_safe.c:73
> _printk+0xbf/0x100 kernel/printk/printk.c:2432
> __report_bug lib/bug.c:195 [inline]
> report_bug+0x27c/0x500 lib/bug.c:219
> handle_bug+0xe5/0x180 arch/x86/kernel/traps.c:285
> exc_invalid_op+0x35/0x80 arch/x86/kernel/traps.c:309
> asm_exc_invalid_op+0x1a/0x20 arch/x86/include/asm/idtentry.h:621
>RIP: 0010:perf_trace_add+0x2da/0x390 kernel/trace/trace_event_perf.c:375
>Code: fc ff df 48 89 fa 48 c1 ea 03 80 3c 02 00 75 64 48 89 ab f8 01 00 00 48 89 df e8 b1 ab 26 00 e9 f3 fd ff ff e8 37 87 f6 ff 90 <0f> 0b 90 41 bc ea ff ff ff e9 77 ff ff ff e8 23 c5 56 00 e9 8a fd
>RSP: 0018:ffffc9000713f7f0 EFLAGS: 00010006
>RAX: 0000000040000002 RBX: ffff88802a069880 RCX: ffffffff8195a68e
>RDX: ffff888045ec2500 RSI: ffffffff8195a839 RDI: ffffffff8deabf48
>RBP: 0000000000000000 R08: 0000000000000001 R09: fffff52000e27eef
>R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
>R13: ffffffff8deabee0 R14: ffff88802a069928 R15: ffff888051237200
> event_sched_in+0x434/0xac0 kernel/events/core.c:2629
> group_sched_in kernel/events/core.c:2662 [inline]
> merge_sched_in+0x895/0x1570 kernel/events/core.c:3940
> visit_groups_merge.constprop.0.isra.0+0x6d2/0x1250 kernel/events/core.c:3885
> pmu_groups_sched_in kernel/events/core.c:3967 [inline]
> __pmu_ctx_sched_in kernel/events/core.c:3979 [inline]
> ctx_sched_in+0x5c1/0xa30 kernel/events/core.c:4030
> perf_event_sched_in+0x5d/0x90 kernel/events/core.c:2760
> perf_event_context_sched_in kernel/events/core.c:4077 [inline]
> __perf_event_task_sched_in+0x33a/0x6f0 kernel/events/core.c:4106
> perf_event_task_sched_in include/linux/perf_event.h:1524 [inline]
> finish_task_switch.isra.0+0x5f9/0xcb0 kernel/sched/core.c:5201
> context_switch kernel/sched/core.c:5335 [inline]
> __schedule+0x1156/0x5b20 kernel/sched/core.c:6710
> preempt_schedule_irq+0x51/0x90 kernel/sched/core.c:7032
> irqentry_exit+0x36/0x90 kernel/entry/common.c:354
> asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
>RIP: 0010:__sanitizer_cov_trace_pc+0x0/0x80 kernel/kcov.c:210
>Code: 5d 41 5c 41 5d c3 cc cc cc cc 48 c7 c0 f4 ff ff ff eb 92 0f 1f 80 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 <f3> 0f 1e fa 65 48 8b 15 04 ae 77 7e 65 8b 05 05 ae 77 7e a9 00 01
>RSP: 0000:ffffc9000713fe20 EFLAGS: 00000212
>RAX: 000000000000fe4d RBX: 0000000000000200 RCX: ffffc9002f801000
>RDX: 0000000000080000 RSI: ffffffff81d2e884 RDI: 0000000000000007
>RBP: 0000000000000000 R08: 0000000000000001 R09: fffffbfff2d84fa6
>R10: 0000000000000200 R11: 0000000000000000 R12: ffff888020dea000
>R13: ffff88804a8558c8 R14: 0000000000000040 R15: ffff88804f13f200
> rcu_read_unlock include/linux/rcupdate.h:878 [inline]
> count_memcg_events_mm.constprop.0+0x12a/0x330 include/linux/memcontrol.h:1046
> count_memcg_event_mm include/linux/memcontrol.h:1052 [inline]
> mm_account_fault mm/memory.c:5947 [inline]
> handle_mm_fault+0x5af/0xab0 mm/memory.c:6107
> do_user_addr_fault+0x61b/0x13a0 arch/x86/mm/fault.c:1338
> handle_page_fault arch/x86/mm/fault.c:1481 [inline]
> exc_page_fault+0x98/0x180 arch/x86/mm/fault.c:1539
> asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:623
>RIP: 0033:0x7fe4fdc4f757
>Code: 70 48 63 d5 48 01 c2 49 3b 55 08 77 4e 8d 55 ff 85 ed 74 35 0f 1f 80 00 00 00 00 48 39 c6 77 1c 49 8b 7d 00 49 89 c1 49 29 f1 <46> 0f b6 0c 0f 45 84 c9 74 08 44 88 0c 07 49 8b 45 10 48 83 c0 01
>RSP: 002b:00007fe4fec1b420 EFLAGS: 00010206
>RAX: 0000000000067001 RBX: 00007fe4fec1b480 RCX: 0000000000000000
>RDX: 000000000000004c RSI: 0000000000000001 RDI: 00007fe4f3600000
>RBP: 0000000000000102 R08: 0000000000000001 R09: 0000000000067000
>R10: 0000000000000000 R11: 00007fe4fec1b490 R12: 00007fe4fec1b490
>R13: 00007fe4fec1b520 R14: 0000000000000001 R15: 0000000000000000
> </TASK>
>WARNING: CPU: 0 PID: 15835 at kernel/trace/trace_event_perf.c:375 perf_trace_add+0x2da/0x390 kernel/trace/trace_event_perf.c:375
>Modules linked in:
>CPU: 0 UID: 0 PID: 15835 Comm: syz.9.499 Not tainted 6.12.25 #3
>Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
>RIP: 0010:perf_trace_add+0x2da/0x390 kernel/trace/trace_event_perf.c:375
>Code: fc ff df 48 89 fa 48 c1 ea 03 80 3c 02 00 75 64 48 89 ab f8 01 00 00 48 89 df e8 b1 ab 26 00 e9 f3 fd ff ff e8 37 87 f6 ff 90 <0f> 0b 90 41 bc ea ff ff ff e9 77 ff ff ff e8 23 c5 56 00 e9 8a fd
>RSP: 0018:ffffc9000713f7f0 EFLAGS: 00010006
>RAX: 0000000040000002 RBX: ffff88802a069880 RCX: ffffffff8195a68e
>RDX: ffff888045ec2500 RSI: ffffffff8195a839 RDI: ffffffff8deabf48
>RBP: 0000000000000000 R08: 0000000000000001 R09: fffff52000e27eef
>R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
>R13: ffffffff8deabee0 R14: ffff88802a069928 R15: ffff888051237200
>FS: 00007fe4fec1c640(0000) GS:ffff88802b800000(0000) knlGS:0000000000000000
>CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>CR2: 00007f50219e7bac CR3: 00000000743bc000 CR4: 0000000000752ef0
>DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
>DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
>PKRU: 80000000
>Call Trace:
> <TASK>
> event_sched_in+0x434/0xac0 kernel/events/core.c:2629
> group_sched_in kernel/events/core.c:2662 [inline]
> merge_sched_in+0x895/0x1570 kernel/events/core.c:3940
> visit_groups_merge.constprop.0.isra.0+0x6d2/0x1250 kernel/events/core.c:3885
> pmu_groups_sched_in kernel/events/core.c:3967 [inline]
> __pmu_ctx_sched_in kernel/events/core.c:3979 [inline]
> ctx_sched_in+0x5c1/0xa30 kernel/events/core.c:4030
> perf_event_sched_in+0x5d/0x90 kernel/events/core.c:2760
> perf_event_context_sched_in kernel/events/core.c:4077 [inline]
> __perf_event_task_sched_in+0x33a/0x6f0 kernel/events/core.c:4106
> perf_event_task_sched_in include/linux/perf_event.h:1524 [inline]
> finish_task_switch.isra.0+0x5f9/0xcb0 kernel/sched/core.c:5201
> context_switch kernel/sched/core.c:5335 [inline]
> __schedule+0x1156/0x5b20 kernel/sched/core.c:6710
> preempt_schedule_irq+0x51/0x90 kernel/sched/core.c:7032
> irqentry_exit+0x36/0x90 kernel/entry/common.c:354
> asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702
>RIP: 0010:__sanitizer_cov_trace_pc+0x0/0x80 kernel/kcov.c:210
>Code: 5d 41 5c 41 5d c3 cc cc cc cc 48 c7 c0 f4 ff ff ff eb 92 0f 1f 80 00 00 00 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 <f3> 0f 1e fa 65 48 8b 15 04 ae 77 7e 65 8b 05 05 ae 77 7e a9 00 01
>RSP: 0000:ffffc9000713fe20 EFLAGS: 00000212
>RAX: 000000000000fe4d RBX: 0000000000000200 RCX: ffffc9002f801000
>RDX: 0000000000080000 RSI: ffffffff81d2e884 RDI: 0000000000000007
>RBP: 0000000000000000 R08: 0000000000000001 R09: fffffbfff2d84fa6
>R10: 0000000000000200 R11: 0000000000000000 R12: ffff888020dea000
>R13: ffff88804a8558c8 R14: 0000000000000040 R15: ffff88804f13f200
> rcu_read_unlock include/linux/rcupdate.h:878 [inline]
> count_memcg_events_mm.constprop.0+0x12a/0x330 include/linux/memcontrol.h:1046
> count_memcg_event_mm include/linux/memcontrol.h:1052 [inline]
> mm_account_fault mm/memory.c:5947 [inline]
> handle_mm_fault+0x5af/0xab0 mm/memory.c:6107
> do_user_addr_fault+0x61b/0x13a0 arch/x86/mm/fault.c:1338
> handle_page_fault arch/x86/mm/fault.c:1481 [inline]
> exc_page_fault+0x98/0x180 arch/x86/mm/fault.c:1539
> asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:623
>RIP: 0033:0x7fe4fdc4f757
>Code: 70 48 63 d5 48 01 c2 49 3b 55 08 77 4e 8d 55 ff 85 ed 74 35 0f 1f 80 00 00 00 00 48 39 c6 77 1c 49 8b 7d 00 49 89 c1 49 29 f1 <46> 0f b6 0c 0f 45 84 c9 74 08 44 88 0c 07 49 8b 45 10 48 83 c0 01
>RSP: 002b:00007fe4fec1b420 EFLAGS: 00010206
>RAX: 0000000000067001 RBX: 00007fe4fec1b480 RCX: 0000000000000000
>RDX: 000000000000004c RSI: 0000000000000001 RDI: 00007fe4f3600000
>RBP: 0000000000000102 R08: 0000000000000001 R09: 0000000000067000
>R10: 0000000000000000 R11: 00007fe4fec1b490 R12: 00007fe4fec1b490
>R13: 00007fe4fec1b520 R14: 0000000000000001 R15: 0000000000000000
> </TASK>
>----------------
>Code disassembly (best guess):
> 0: 5d pop %rbp
> 1: 41 5c pop %r12
> 3: 41 5d pop %r13
> 5: c3 ret
> 6: cc int3
> 7: cc int3
> 8: cc int3
> 9: cc int3
> a: 48 c7 c0 f4 ff ff ff mov $0xfffffffffffffff4,%rax
> 11: eb 92 jmp 0xffffffa5
> 13: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
> 1a: 90 nop
> 1b: 90 nop
> 1c: 90 nop
> 1d: 90 nop
> 1e: 90 nop
> 1f: 90 nop
> 20: 90 nop
> 21: 90 nop
> 22: 90 nop
> 23: 90 nop
> 24: 90 nop
> 25: 90 nop
> 26: 90 nop
> 27: 90 nop
> 28: 90 nop
> 29: 90 nop
>* 2a: f3 0f 1e fa endbr64 <-- trapping instruction
> 2e: 65 48 8b 15 04 ae 77 mov %gs:0x7e77ae04(%rip),%rdx # 0x7e77ae3a
> 35: 7e
> 36: 65 8b 05 05 ae 77 7e mov %gs:0x7e77ae05(%rip),%eax # 0x7e77ae42
> 3d: a9 .byte 0xa9
> 3e: 00 01 add %al,(%rcx)
>===================================================================
>
>
>I hope it helps.
>Best regards
>Jianzhou Zhao
Powered by blists - more mailing lists