public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [syzbot] [perf?] WARNING in __free_event
@ 2025-04-04  7:02 syzbot
  2025-04-05 17:12 ` [syzbot] #syz test syzbot
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: syzbot @ 2025-04-04  7:02 UTC (permalink / raw)
  To: acme, adrian.hunter, alexander.shishkin, edumazet, irogers, jolsa,
	kan.liang, linux-kernel, linux-perf-users, mark.rutland, mingo,
	namhyung, netdev, peterz, sven, sw, syzkaller-bugs

Hello,

syzbot found the following issue on:

HEAD commit:    0a87d6bb6fd2 Merge tag 'powerpc-6.15-2' of git://git.kerne..
git tree:       bpf-next
console+strace: https://syzkaller.appspot.com/x/log.txt?x=1780f7b0580000
kernel config:  https://syzkaller.appspot.com/x/.config?x=6631c78ce6cb228d
dashboard link: https://syzkaller.appspot.com/bug?extid=ff3aa851d46ab82953a3
compiler:       Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
syz repro:      https://syzkaller.appspot.com/x/repro.syz?x=15440be4580000
C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=12295404580000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/e5cffcf83e28/disk-0a87d6bb.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/905e70de24af/vmlinux-0a87d6bb.xz
kernel image: https://storage.googleapis.com/syzbot-assets/5c28ed628313/bzImage-0a87d6bb.xz

The issue was bisected to:

commit 00b35530811f2aa3d7ceec2dbada80861c7632a8
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Feb 6 14:04:22 2025 +0000

    batman-adv: adopt netdev_hold() / netdev_put()

bisection log:  https://syzkaller.appspot.com/x/bisect.txt?x=10a7e94c580000
final oops:     https://syzkaller.appspot.com/x/report.txt?x=12a7e94c580000
console output: https://syzkaller.appspot.com/x/log.txt?x=14a7e94c580000

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+ff3aa851d46ab82953a3@syzkaller.appspotmail.com
Fixes: 00b35530811f ("batman-adv: adopt netdev_hold() / netdev_put()")

------------[ cut here ]------------
WARNING: CPU: 1 PID: 6031 at kernel/events/core.c:5572 __free_event+0x50f/0x620 kernel/events/core.c:5572
Modules linked in:
CPU: 1 UID: 0 PID: 6031 Comm: syz-executor189 Not tainted 6.14.0-syzkaller-g0a87d6bb6fd2 #0 PREEMPT(full) 
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/12/2025
RIP: 0010:__free_event+0x50f/0x620 kernel/events/core.c:5572
Code: ff 48 c7 c7 a0 0c df 8e e8 6e a5 a6 ff 43 0f b6 44 25 00 84 c0 0f 85 f5 00 00 00 41 80 26 ef e9 ea fc ff ff e8 d2 46 cb ff 90 <0f> 0b 90 42 80 3c 3b 00 0f 85 2d fe ff ff e9 30 fe ff ff e8 b9 46
RSP: 0018:ffffc9000461f858 EFLAGS: 00010293
RAX: ffffffff81f8104e RBX: 1ffff110089a873c RCX: ffff88802f5dda00
RDX: 0000000000000000 RSI: 0000000000000003 RDI: 0000000000000001
RBP: 0000000000000003 R08: ffffffff81f80e1b R09: 1ffff1100fc94b45
R10: dffffc0000000000 R11: ffffed100fc94b46 R12: ffff888044d439d8
R13: ffff888044d439e0 R14: 1ffff110089a873b R15: dffffc0000000000
FS:  00007f1a7f6516c0(0000) GS:ffff888125099000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f1a7f743320 CR3: 000000003461c000 CR4: 00000000003526f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 inherit_event+0x190/0x9d0 kernel/events/core.c:14036
 inherit_group kernel/events/core.c:14110 [inline]
 inherit_task_group+0x18d/0x4f0 kernel/events/core.c:14177
 perf_event_init_context kernel/events/core.c:14226 [inline]
 perf_event_init_task+0x244/0x650 kernel/events/core.c:14295
 copy_process+0x151e/0x3d10 kernel/fork.c:2403
 kernel_clone+0x242/0x930 kernel/fork.c:2844
 __do_sys_clone kernel/fork.c:2987 [inline]
 __se_sys_clone kernel/fork.c:2971 [inline]
 __x64_sys_clone+0x268/0x2e0 kernel/fork.c:2971
 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
 do_syscall_64+0xf3/0x230 arch/x86/entry/syscall_64.c:94
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f1a7f6b98d9
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 51 18 00 00 90 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 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f1a7f651218 EFLAGS: 00000246 ORIG_RAX: 0000000000000038
RAX: ffffffffffffffda RBX: 00007f1a7f743338 RCX: 00007f1a7f6b98d9
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00000000ab009400
RBP: 00007f1a7f743330 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00007f1a7f710a94
R13: affffff7ffffffff R14: 0000200000000180 R15: 00000000ab009400
 </TASK>


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@googlegroups.com.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
For information about bisection process see: https://goo.gl/tpsmEJ#bisection

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [syzbot] #syz test
  2025-04-04  7:02 [syzbot] [perf?] WARNING in __free_event syzbot
@ 2025-04-05 17:12 ` syzbot
  2025-04-05 19:32 ` syzbot
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: syzbot @ 2025-04-05 17:12 UTC (permalink / raw)
  To: linux-kernel, syzkaller-bugs

For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.

***

Subject: #syz test
Author: gshahrouzi@gmail.com

diff --git a/kernel/events/core.c b/kernel/events/core.c
index 0bb21659e252..153ba622cfa0 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -14016,6 +14016,9 @@ inherit_event(struct perf_event *parent_event,
        if (IS_ERR(child_event))
                return child_event;

+       get_ctx(child_ctx);
+       child_event->ctx = child_ctx;
+
        pmu_ctx = find_get_pmu_context(child_event->pmu, child_ctx,
child_event);
        if (IS_ERR(pmu_ctx)) {
                free_event(child_event);
@@ -14037,8 +14040,6 @@ inherit_event(struct perf_event *parent_event,
                return NULL;
        }

-       get_ctx(child_ctx);
-
        /*
         * Make the child state follow the state of the parent event,
         * not its attr.disabled bit.  We hold the parent's mutex,
@@ -14059,7 +14060,6 @@ inherit_event(struct perf_event *parent_event,
                local64_set(&hwc->period_left, sample_period);
        }

-       child_event->ctx = child_ctx;
        child_event->overflow_handler = parent_event->overflow_handler;
        child_event->overflow_handler_context
                = parent_event->overflow_handler_context;
-- 
2.43.0

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [syzbot] #syz test
  2025-04-04  7:02 [syzbot] [perf?] WARNING in __free_event syzbot
  2025-04-05 17:12 ` [syzbot] #syz test syzbot
@ 2025-04-05 19:32 ` syzbot
  2025-04-05 22:45 ` [syzbot] #syz test: git://git.kernel.dk/linux.git syztest syzbot
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: syzbot @ 2025-04-05 19:32 UTC (permalink / raw)
  To: linux-kernel, syzkaller-bugs

For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.

***

Subject: #syz test
Author: gshahrouzi@gmail.com

diff --git a/kernel/events/core.c b/kernel/events/core.c
index 0bb21659e252..153ba622cfa0 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -14016,6 +14016,9 @@ inherit_event(struct perf_event *parent_event,
 	if (IS_ERR(child_event))
 		return child_event;
 
+	get_ctx(child_ctx);
+	child_event->ctx = child_ctx;
+
 	pmu_ctx = find_get_pmu_context(child_event->pmu, child_ctx, child_event);
 	if (IS_ERR(pmu_ctx)) {
 		free_event(child_event);
@@ -14037,8 +14040,6 @@ inherit_event(struct perf_event *parent_event,
 		return NULL;
 	}
 
-	get_ctx(child_ctx);
-
 	/*
 	 * Make the child state follow the state of the parent event,
 	 * not its attr.disabled bit.  We hold the parent's mutex,
@@ -14059,7 +14060,6 @@ inherit_event(struct perf_event *parent_event,
 		local64_set(&hwc->period_left, sample_period);
 	}
 
-	child_event->ctx = child_ctx;
 	child_event->overflow_handler = parent_event->overflow_handler;
 	child_event->overflow_handler_context
 		= parent_event->overflow_handler_context;
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [syzbot] #syz test: git://git.kernel.dk/linux.git syztest
  2025-04-04  7:02 [syzbot] [perf?] WARNING in __free_event syzbot
  2025-04-05 17:12 ` [syzbot] #syz test syzbot
  2025-04-05 19:32 ` syzbot
@ 2025-04-05 22:45 ` syzbot
  2025-04-05 22:52 ` [syzbot] #syz test: git://git.kernel.dk/linux.git master syzbot
  2025-04-05 22:58 ` [syzbot] #syz test: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 5fc31936081919a8572a3d644f3fbb258038f337 syzbot
  4 siblings, 0 replies; 6+ messages in thread
From: syzbot @ 2025-04-05 22:45 UTC (permalink / raw)
  To: linux-kernel, syzkaller-bugs

For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.

***

Subject: #syz test: git://git.kernel.dk/linux.git syztest
Author: gshahrouzi@gmail.com

Move the get_ctx(child_ctx) call and the child_event->ctx assignment to
occur immediately after the child event is allocated. Ensure that
child_event->ctx is non-NULL before any subsequent error path within
inherit_event calls free_event(), satisfying the assumptions of the
cleanup code.

Reported-by: syzbot+ff3aa851d46ab82953a3@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=ff3aa851d46ab82953a3
Signed-off-by: Gabriel Shahrouzi <gshahrouzi@gmail.com>
---
 kernel/events/core.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/kernel/events/core.c b/kernel/events/core.c
index 0bb21659e252..153ba622cfa0 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -14016,6 +14016,9 @@ inherit_event(struct perf_event *parent_event,
 	if (IS_ERR(child_event))
 		return child_event;
 
+	get_ctx(child_ctx);
+	child_event->ctx = child_ctx;
+
 	pmu_ctx = find_get_pmu_context(child_event->pmu, child_ctx, child_event);
 	if (IS_ERR(pmu_ctx)) {
 		free_event(child_event);
@@ -14037,8 +14040,6 @@ inherit_event(struct perf_event *parent_event,
 		return NULL;
 	}
 
-	get_ctx(child_ctx);
-
 	/*
 	 * Make the child state follow the state of the parent event,
 	 * not its attr.disabled bit.  We hold the parent's mutex,
@@ -14059,7 +14060,6 @@ inherit_event(struct perf_event *parent_event,
 		local64_set(&hwc->period_left, sample_period);
 	}
 
-	child_event->ctx = child_ctx;
 	child_event->overflow_handler = parent_event->overflow_handler;
 	child_event->overflow_handler_context
 		= parent_event->overflow_handler_context;
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [syzbot] #syz test: git://git.kernel.dk/linux.git master
  2025-04-04  7:02 [syzbot] [perf?] WARNING in __free_event syzbot
                   ` (2 preceding siblings ...)
  2025-04-05 22:45 ` [syzbot] #syz test: git://git.kernel.dk/linux.git syztest syzbot
@ 2025-04-05 22:52 ` syzbot
  2025-04-05 22:58 ` [syzbot] #syz test: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 5fc31936081919a8572a3d644f3fbb258038f337 syzbot
  4 siblings, 0 replies; 6+ messages in thread
From: syzbot @ 2025-04-05 22:52 UTC (permalink / raw)
  To: linux-kernel, syzkaller-bugs

For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.

***

Subject: #syz test: git://git.kernel.dk/linux.git master
Author: gshahrouzi@gmail.com

Move the get_ctx(child_ctx) call and the child_event->ctx assignment to
occur immediately after the child event is allocated. Ensure that
child_event->ctx is non-NULL before any subsequent error path within
inherit_event calls free_event(), satisfying the assumptions of the
cleanup code.

Reported-by: syzbot+ff3aa851d46ab82953a3@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=ff3aa851d46ab82953a3
Signed-off-by: Gabriel Shahrouzi <gshahrouzi@gmail.com>
---
 kernel/events/core.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/kernel/events/core.c b/kernel/events/core.c
index 0bb21659e252..153ba622cfa0 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -14016,6 +14016,9 @@ inherit_event(struct perf_event *parent_event,
 	if (IS_ERR(child_event))
 		return child_event;
 
+	get_ctx(child_ctx);
+	child_event->ctx = child_ctx;
+
 	pmu_ctx = find_get_pmu_context(child_event->pmu, child_ctx, child_event);
 	if (IS_ERR(pmu_ctx)) {
 		free_event(child_event);
@@ -14037,8 +14040,6 @@ inherit_event(struct perf_event *parent_event,
 		return NULL;
 	}
 
-	get_ctx(child_ctx);
-
 	/*
 	 * Make the child state follow the state of the parent event,
 	 * not its attr.disabled bit.  We hold the parent's mutex,
@@ -14059,7 +14060,6 @@ inherit_event(struct perf_event *parent_event,
 		local64_set(&hwc->period_left, sample_period);
 	}
 
-	child_event->ctx = child_ctx;
 	child_event->overflow_handler = parent_event->overflow_handler;
 	child_event->overflow_handler_context
 		= parent_event->overflow_handler_context;
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [syzbot] #syz test: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 5fc31936081919a8572a3d644f3fbb258038f337
  2025-04-04  7:02 [syzbot] [perf?] WARNING in __free_event syzbot
                   ` (3 preceding siblings ...)
  2025-04-05 22:52 ` [syzbot] #syz test: git://git.kernel.dk/linux.git master syzbot
@ 2025-04-05 22:58 ` syzbot
  4 siblings, 0 replies; 6+ messages in thread
From: syzbot @ 2025-04-05 22:58 UTC (permalink / raw)
  To: linux-kernel, syzkaller-bugs

For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.

***

Subject: #syz test: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 5fc31936081919a8572a3d644f3fbb258038f337
Author: gshahrouzi@gmail.com

Move the get_ctx(child_ctx) call and the child_event->ctx assignment to
occur immediately after the child event is allocated. Ensure that
child_event->ctx is non-NULL before any subsequent error path within
inherit_event calls free_event(), satisfying the assumptions of the
cleanup code.

Reported-by: syzbot+ff3aa851d46ab82953a3@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=ff3aa851d46ab82953a3
Signed-off-by: Gabriel Shahrouzi <gshahrouzi@gmail.com>
---
 kernel/events/core.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/kernel/events/core.c b/kernel/events/core.c
index 0bb21659e252..153ba622cfa0 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -14016,6 +14016,9 @@ inherit_event(struct perf_event *parent_event,
 	if (IS_ERR(child_event))
 		return child_event;
 
+	get_ctx(child_ctx);
+	child_event->ctx = child_ctx;
+
 	pmu_ctx = find_get_pmu_context(child_event->pmu, child_ctx, child_event);
 	if (IS_ERR(pmu_ctx)) {
 		free_event(child_event);
@@ -14037,8 +14040,6 @@ inherit_event(struct perf_event *parent_event,
 		return NULL;
 	}
 
-	get_ctx(child_ctx);
-
 	/*
 	 * Make the child state follow the state of the parent event,
 	 * not its attr.disabled bit.  We hold the parent's mutex,
@@ -14059,7 +14060,6 @@ inherit_event(struct perf_event *parent_event,
 		local64_set(&hwc->period_left, sample_period);
 	}
 
-	child_event->ctx = child_ctx;
 	child_event->overflow_handler = parent_event->overflow_handler;
 	child_event->overflow_handler_context
 		= parent_event->overflow_handler_context;
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-04-05 22:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-04  7:02 [syzbot] [perf?] WARNING in __free_event syzbot
2025-04-05 17:12 ` [syzbot] #syz test syzbot
2025-04-05 19:32 ` syzbot
2025-04-05 22:45 ` [syzbot] #syz test: git://git.kernel.dk/linux.git syztest syzbot
2025-04-05 22:52 ` [syzbot] #syz test: git://git.kernel.dk/linux.git master syzbot
2025-04-05 22:58 ` [syzbot] #syz test: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 5fc31936081919a8572a3d644f3fbb258038f337 syzbot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox