possible deadlock in trie_delete_elem
Subsystems (6)
syzbot
syzbotHello,
syzbot found the following issue on:
HEAD commit: 32fa4366cc4d net: phy: fix phy_read_poll_timeout argument .. git tree: net console+strace: https://syzkaller.appspot.com/x/log.txt?x=16f5d769180000 kernel config: https://syzkaller.appspot.com/x/.config?x=6fb1be60a193d440 dashboard link: https://syzkaller.appspot.com/bug?extid=9d95beb2a3c260622518 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=14572985180000 C reproducer: https://syzkaller.appspot.com/x/repro.c?x=1676fc6e180000
Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/bb05871df8fc/disk-32fa4366.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/a774323fb6ec/vmlinux-32fa4366.xz
kernel image: https://storage.googleapis.com/syzbot-assets/1742ae20d76c/bzImage-32fa4366.xz
IMPORTANT: if you fix the issue, please add the following tag to the commit:
============================================
WARNING: possible recursive locking detected
6.8.0-syzkaller-05242-g32fa4366cc4d #0 Not tainted
--------------------------------------------
syz-executor217/5072 is trying to acquire lock:ffff88802a0fd9f8 (&trie->lock){....}-{2:2}, at: trie_delete_elem+0x96/0x6a0 kernel/bpf/lpm_trie.c:451
but task is already holding lock:ffff88802a0fc9f8 (&trie->lock){....}-{2:2}, at: trie_update_elem+0xcb/0xc10 kernel/bpf/lpm_trie.c:324
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
---- lock(&trie->lock);
lock(&trie->lock);
*** DEADLOCK ***
May be due to missing lock nesting notation
3 locks held by syz-executor217/5072:
#0: ffffffff8e131920 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:298 [inline] #0: ffffffff8e131920 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:750 [inline] #0: ffffffff8e131920 (rcu_read_lock){....}-{1:2}, at: bpf_map_update_value+0x3c4/0x540 kernel/bpf/syscall.c:202 #1: ffff88802a0fc9f8 (&trie->lock){....}-{2:2}, at: trie_update_elem+0xcb/0xc10 kernel/bpf/lpm_trie.c:324 #2: ffffffff8e131920 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:298 [inline] #2: ffffffff8e131920 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:750 [inline] #2: ffffffff8e131920 (rcu_read_lock){....}-{1:2}, at: __bpf_trace_run kernel/trace/bpf_trace.c:2380 [inline] #2: ffffffff8e131920 (rcu_read_lock){....}-{1:2}, at: bpf_trace_run4+0x16e/0x490 kernel/trace/bpf_trace.c:2422
stack backtrace: CPU: 0 PID: 5072 Comm: syz-executor217 Not tainted 6.8.0-syzkaller-05242-g32fa4366cc4d #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/29/2024 Call Trace: <TASK> __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0x1e7/0x2e0 lib/dump_stack.c:106 check_deadlock kernel/locking/lockdep.c:3062 [inline] validate_chain+0x15c1/0x58e0 kernel/locking/lockdep.c:3856 __lock_acquire+0x1346/0x1fd0 kernel/locking/lockdep.c:5137 lock_acquire+0x1e4/0x530 kernel/locking/lockdep.c:5754 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline] _raw_spin_lock_irqsave+0xd5/0x120 kernel/locking/spinlock.c:162 trie_delete_elem+0x96/0x6a0 kernel/bpf/lpm_trie.c:451 bpf_prog_2c29ac5cdc6b1842+0x42/0x46 bpf_dispatcher_nop_func include/linux/bpf.h:1234 [inline] __bpf_prog_run include/linux/filter.h:657 [inline] bpf_prog_run include/linux/filter.h:664 [inline] __bpf_trace_run kernel/trace/bpf_trace.c:2381 [inline] bpf_trace_run4+0x25a/0x490 kernel/trace/bpf_trace.c:2422 trace_mm_page_alloc include/trace/events/kmem.h:177 [inline] __alloc_pages+0x657/0x680 mm/page_alloc.c:4591 __alloc_pages_node include/linux/gfp.h:238 [inline] alloc_pages_node include/linux/gfp.h:261 [inline] __kmalloc_large_node+0x91/0x1f0 mm/slub.c:3926 __do_kmalloc_node mm/slub.c:3969 [inline] __kmalloc_node+0x33c/0x4e0 mm/slub.c:3988 kmalloc_node include/linux/slab.h:610 [inline] bpf_map_kmalloc_node+0xd3/0x1c0 kernel/bpf/syscall.c:422 lpm_trie_node_alloc kernel/bpf/lpm_trie.c:291 [inline] trie_update_elem+0x1d3/0xc10 kernel/bpf/lpm_trie.c:333 bpf_map_update_value+0x4d3/0x540 kernel/bpf/syscall.c:203 map_update_elem+0x53a/0x6f0 kernel/bpf/syscall.c:1641 __sys_bpf+0x76f/0x810 kernel/bpf/syscall.c:5619 __do_sys_bpf kernel/bpf/syscall.c:5738 [inline] __se_sys_bpf kernel/bpf/syscall.c:5736 [inline] __x64_sys_bpf+0x7c/0x90 kernel/bpf/syscall.c:5736 do_syscall_64+0xfb/0x240 entry_SYSCALL_64_after_hwframe+0x6d/0x75 RIP: 0033:0x7f933485e7a9 Code: 48 83 c4 28 c3 e8 37 17 00 00 0f 1f 80 00 00 00 00 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 b8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007ffc8852b528 EFLAGS: 00000246 ORIG_RAX: 0000000000000141
RAX: ffffffffffffffda RBX:
---
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 [email protected].
syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
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
On Wed, 20 Mar 2024 01:42:21 -0700
Quoted 5 lines
syzbot found the following issue on:
HEAD commit: 32fa4366cc4d net: phy: fix phy_read_poll_timeout argument .. git tree: net C reproducer: https://syzkaller.appspot.com/x/repro.c?x=1676fc6e180000
#syz test https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git 32fa4366cc4d
kernel/bpf/lpm_trie.c +2 -2
@@ -321,7 +321,7 @@ static long trie_update_elem(struct bpf_if (key->prefixlen > trie->max_prefixlen)return -EINVAL ; -spin_lock_irqsave (&trie->lock, irq_flags); +spin_lock_irqsave_nested (&trie->lock, irq_flags,1 );/* Allocate and fill a new node */
@@ -448,7 +448,7 @@ static long trie_delete_elem(struct bpf_if (key->prefixlen > trie->max_prefixlen)return -EINVAL ; -spin_lock_irqsave (&trie->lock, irq_flags); +spin_lock_irqsave_nested (&trie->lock, irq_flags,2 );/* Walk the tree looking for an exact key/length match and keeping * track of the path we traverse. We will need to know the node
--
syzbot
syzbotsyzbot has tested the proposed patch and the reproducer did not trigger any issue:
Hello,
syzbot has tested the proposed patch and the reproducer did not trigger any issue:
Tested on:
commit: 32fa4366 net: phy: fix phy_read_poll_timeout argument .. git tree: https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git console output: https://syzkaller.appspot.com/x/log.txt?x=174f8dc9180000 kernel config: https://syzkaller.appspot.com/x/.config?x=6fb1be60a193d440 dashboard link: https://syzkaller.appspot.com/bug?extid=9d95beb2a3c260622518 compiler: Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40 patch: https://syzkaller.appspot.com/x/patch.diff?x=1600783a180000
Note: testing is done by a robot and is best-effort only.
syzbot
syzbotsyzbot has bisected this issue to:
syzbot has bisected this issue to:
commit a3c06ae158dd6fa8336157c31d9234689d068d02
Author: Parav Pandit <[email protected]> Date: Tue Jan 5 10:32:03 2021 +0000
vdpa_sim_net: Add support for user supported devices
bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=1626def1180000 start commit: f6e922365faf xsk: Don't assume metadata is always requeste.. git tree: bpf final oops: https://syzkaller.appspot.com/x/report.txt?x=1526def1180000 console output: https://syzkaller.appspot.com/x/log.txt?x=1126def1180000 kernel config: https://syzkaller.appspot.com/x/.config?x=6fb1be60a193d440 dashboard link: https://syzkaller.appspot.com/bug?extid=9d95beb2a3c260622518 syz repro: https://syzkaller.appspot.com/x/repro.syz?x=14115c6e180000 C reproducer: https://syzkaller.appspot.com/x/repro.c?x=124fd231180000
For information about bisection process see: https://goo.gl/tpsmEJ#bisection
syzbot
syzbotRe: [syzbot] Re: [email protected]
In reply to syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: Re: [email protected]
Author: [email protected]
#syz test https://github.com/torvalds/linux.git e377d803b65ee4130213b3c041fc25fdfec1bd90
________________________________
From: syzbot <[email protected]>
Sent: Wednesday, June 5, 2024 09:15
To: Wojciech Gladysz <[email protected]>
Cc: Wojciech Gladysz <[email protected]>; [email protected] <[email protected]>; [email protected] <[email protected]>
Subject: Re: [email protected]
EXTERNAL: This message was sent from outside of Infogain. Please do not click links or open attachments unless you know the content is safe.
Quoted 1 line
#syz testhttps://github.com/torvalds/linux.gite377d803b65ee4130213b3c041fc25fdfec1bd90
unknown command "testhttps://github.com/torvalds/linux.gite377d803b65ee4130213b3c041fc25fdfec1bd90"
Quoted 15 lines
________________________________
From: syzbot <[email protected]>
Sent: Wednesday, June 5, 2024 09:06
To: Wojciech Gladysz <[email protected]>
Cc: Wojciech Gladysz <[email protected]>; [email protected] <[email protected]>; [email protected] <[email protected]>
Subject: Re: [email protected]EXTERNAL: This message was sent from outside of Infogain. Please do not click links or open attachments unless you know the content is safe.
Quoted 1 line
#syz test https://linux.googlesource.com/linux/kernel/git/torvalds/linux<https://linux.googlesource.com/linux/kernel/git/torvalds/linux<https://linux.googlesource.com/linux/kernel/git/torvalds/linux>>
e377d803b65ee4130213b3c041fc25fdfec1bd90"https://linux.googlesource.com/linux/kernel/git/torvalds/linux<https://linux.googlesource.com/linux/kernel/git/torvalds/linux<https://linux.googlesource.com/linux/kernel/git/torvalds/linux>>" does not look like a valid git repo address.
Quoted 2 lines
The information in this email is confidential and may be legally privileged. It is intended solely for the addressee and access to it by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken based on it, is strictly prohibited and may be unlawful.
syzbot
syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: Re: [syzbot] [bpf?] possible deadlock in trie_delete_elem
Author: [email protected]
#syz test https://linux.googlesource.com/linux/kernel/git/torvalds/linux e377d803b65ee4130213b3c041fc25fdfec1bd90
________________________________
From: syzbot <[email protected]>
Sent: Wednesday, June 5, 2024 09:17
To: [email protected] <[email protected]>; [email protected] <[email protected]>; Wojciech Gladysz <[email protected]>
Subject: Re: [syzbot] [bpf?] possible deadlock in trie_delete_elem
EXTERNAL: This message was sent from outside of Infogain. Please do not click links or open attachments unless you know the content is safe.
Hello,
syzbot tried to test the proposed patch but the build/boot failed:
failed to checkout kernel repo https://github.com/torvalds/linux.git on commit e377d803b65ee4130213b3c041fc25fdfec1bd90: failed to run ["git" "fetch" "--force" "--tags" "aa24f7914cebcc04de6104c814c089815e172c16" "e377d803b65ee4130213b3c041fc25fdfec1bd90"]: exit status 128
fatal: remote error: upload-pack: not our ref e377d803b65ee4130213b3c041fc25fdfec1bd90
Tested on:
commit: [unknown git tree: https://github.com/torvalds/linux.git e377d803b65ee4130213b3c041fc25fdfec1bd90 kernel config: https://syzkaller.appspot.com/x/.config?x=9d7ea7de0cb32587 dashboard link: https://syzkaller.appspot.com/bug?extid=9d95beb2a3c260622518
compiler:
Note: no patches were applied.
The information in this email is confidential and may be legally privileged. It is intended solely for the addressee and access to it by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken based on it, is strictly prohibited and may be unlawful.
syzbot
syzbotRe: [syzbot] Re: [email protected]
In reply to syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: Re: [email protected]
Author: [email protected]
#syz test https://linux.googlesource.com/linux/kernel/git/torvalds/linux e377d803b65ee4130213b3c041fc25fdfec1bd90
________________________________
From: syzbot <[email protected]>
Sent: Wednesday, June 5, 2024 09:15
To: Wojciech Gladysz <[email protected]>
Cc: Wojciech Gladysz <[email protected]>; [email protected] <[email protected]>; [email protected] <[email protected]>
Subject: Re: [email protected]
EXTERNAL: This message was sent from outside of Infogain. Please do not click links or open attachments unless you know the content is safe.
Quoted 1 line
#syz testhttps://github.com/torvalds/linux.gite377d803b65ee4130213b3c041fc25fdfec1bd90
unknown command "testhttps://github.com/torvalds/linux.gite377d803b65ee4130213b3c041fc25fdfec1bd90"
Quoted 15 lines
________________________________
From: syzbot <[email protected]>
Sent: Wednesday, June 5, 2024 09:06
To: Wojciech Gladysz <[email protected]>
Cc: Wojciech Gladysz <[email protected]>; [email protected] <[email protected]>; [email protected] <[email protected]>
Subject: Re: [email protected]EXTERNAL: This message was sent from outside of Infogain. Please do not click links or open attachments unless you know the content is safe.
Quoted 1 line
#syz test https://linux.googlesource.com/linux/kernel/git/torvalds/linux<https://linux.googlesource.com/linux/kernel/git/torvalds/linux<https://linux.googlesource.com/linux/kernel/git/torvalds/linux>>
e377d803b65ee4130213b3c041fc25fdfec1bd90"https://linux.googlesource.com/linux/kernel/git/torvalds/linux<https://linux.googlesource.com/linux/kernel/git/torvalds/linux<https://linux.googlesource.com/linux/kernel/git/torvalds/linux>>" does not look like a valid git repo address.
Quoted 2 lines
The information in this email is confidential and may be legally privileged. It is intended solely for the addressee and access to it by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken based on it, is strictly prohibited and may be unlawful.
syzbot
syzbotRe: [syzbot] Re: [email protected]
In reply to syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: Re: [email protected]
Author: [email protected]
#syz test
________________________________
From: Wojciech Gladysz <[email protected]>
Sent: Wednesday, June 5, 2024 09:25
To: syzbot <[email protected]>
Subject: Re: [email protected]
#syz test https://linux.googlesource.com/linux/kernel/git/torvalds/linux e377d803b65ee4130213b3c041fc25fdfec1bd90
________________________________
From: syzbot <[email protected]>
Sent: Wednesday, June 5, 2024 09:15
To: Wojciech Gladysz <[email protected]>
Cc: Wojciech Gladysz <[email protected]>; [email protected] <[email protected]>; [email protected] <[email protected]>
Subject: Re: [email protected]
EXTERNAL: This message was sent from outside of Infogain. Please do not click links or open attachments unless you know the content is safe.
Quoted 1 line
#syz testhttps://github.com/torvalds/linux.gite377d803b65ee4130213b3c041fc25fdfec1bd90
unknown command "testhttps://github.com/torvalds/linux.gite377d803b65ee4130213b3c041fc25fdfec1bd90"
Quoted 15 lines
________________________________
From: syzbot <[email protected]>
Sent: Wednesday, June 5, 2024 09:06
To: Wojciech Gladysz <[email protected]>
Cc: Wojciech Gladysz <[email protected]>; [email protected] <[email protected]>; [email protected] <[email protected]>
Subject: Re: [email protected]EXTERNAL: This message was sent from outside of Infogain. Please do not click links or open attachments unless you know the content is safe.
Quoted 1 line
#syz test https://linux.googlesource.com/linux/kernel/git/torvalds/linux<https://linux.googlesource.com/linux/kernel/git/torvalds/linux<https://linux.googlesource.com/linux/kernel/git/torvalds/linux>>
e377d803b65ee4130213b3c041fc25fdfec1bd90"https://linux.googlesource.com/linux/kernel/git/torvalds/linux<https://linux.googlesource.com/linux/kernel/git/torvalds/linux<https://linux.googlesource.com/linux/kernel/git/torvalds/linux>>" does not look like a valid git repo address.
Quoted 2 lines
The information in this email is confidential and may be legally privileged. It is intended solely for the addressee and access to it by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken based on it, is strictly prohibited and may be unlawful.
syzbot
syzbotRe: [syzbot] Re: [email protected]
In reply to syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: Re: [email protected]
Author: [email protected]
#syz test https://linux.googlesource.com/linux/kernel/git/torvalds/linux e377d803b65ee4130213b3c041fc25fdfec1bd90
kernel/trace/bpf_trace.c +11 -2
@@ -2393,12 +2393,21 @@ void __bpf_trace_run(struct bpf_raw_tp_link *link, u64 *args) cant_sleep(); // return if instrumentation disabled, see: bpf_disable_instrumentation - if (unlikely(__this_cpu_read(bpf_prog_active))) { + int instrumentation = unlikely(__this_cpu_read(bpf_prog_active)); + if (instrumentation) { + printk("SKIP FOR INSTRUMENTATION: %s > %s > %p /%i ==============\n", + prog->aux->name, + link->btp->tp->name, prog, instrumentation); bpf_prog_inc_misses_counter(prog); return; } - if (unlikely(this_cpu_inc_return(*(prog->active)) != 1)) { + int active = this_cpu_inc_return(*(prog->active)); + // printk("%s > %s > %p /%i\n", prog->aux->name, link->btp->tp->name, prog, active); + if (active != 1) { + printk("SKIP FOR ACTIVE: %s > %s > %p /%i =======================\n", + prog->aux->name, + link->btp->tp->name, prog, active); bpf_prog_inc_misses_counter(prog); goto out; }
kernel/tracepoint.c +3 -1
@@ -67,7 +67,7 @@ static void tp_rcu_cond_sync(enum tp_transition_sync sync) }/* Set to 1 to enable tracepoint debug output */ -static const int tracepoint_debug; +static const int tracepoint_debug=1 ;#ifdef CONFIG_MODULES /*
@@ -298,6 +298,8 @@ static enum tp_func_state nr_func_state(const struct tracepoint_func *tp_funcs) { if (!tp_funcs) return TP_FUNC_0; + if (!tp_funcs[0].func) + return TP_FUNC_0; if (!tp_funcs[1].func) return TP_FUNC_1; if (!tp_funcs[2].func)
The information in this email is confidential and may be legally privileged. It is intended solely for the addressee and access to it by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken based on it, is strictly prohibited and may be unlawful.
syzbot
syzbotRe: [syzbot] Re: [email protected]
In reply to syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: Re: [email protected]
Author: [email protected]
#syz test https://linux.googlesource.com/linux/kernel/git/torvalds/linux e377d803b65ee4130213b3c041fc25fdfec1bd90
kernel/trace/bpf_trace.c +11 -2
@@ -2393,12 +2393,21 @@ void __bpf_trace_run(struct bpf_raw_tp_link *link, u64 *args) cant_sleep(); // return if instrumentation disabled, see: bpf_disable_instrumentation - if (unlikely(__this_cpu_read(bpf_prog_active))) { + int instrumentation = unlikely(__this_cpu_read(bpf_prog_active)); + if (instrumentation) { + printk("SKIP FOR INSTRUMENTATION: %s > %s > %p /%i ==============\n", + prog->aux->name, + link->btp->tp->name, prog, instrumentation); bpf_prog_inc_misses_counter(prog); return; } - if (unlikely(this_cpu_inc_return(*(prog->active)) != 1)) { + int active = this_cpu_inc_return(*(prog->active)); + // printk("%s > %s > %p /%i\n", prog->aux->name, link->btp->tp->name, prog, active); + if (active != 1) { + printk("SKIP FOR ACTIVE: %s > %s > %p /%i =======================\n", + prog->aux->name, + link->btp->tp->name, prog, active); bpf_prog_inc_misses_counter(prog); goto out; }
kernel/tracepoint.c +13 -2
@@ -168,12 +169,21 @@ static inline void release_probes(struct tracepoint_func *old)static void debug_print_probes (struct tracepoint_func *funcs) { int i; + struct bpf_raw_tp_link *link; if (!tracepoint_debug || !funcs) return; - for (i = 0; funcs[i].func; i++) - printk(KERN_DEBUG "Probe %d : %p\n", i, funcs[i].func); + for (i = 0; funcs[i].func; i++) { + link = funcs[i].data; + int active = this_cpu_read(*(link->link.prog->active)); + printk("Probe %d : %p / %p: %s/%d / %i\n", i, + funcs[i].func, + link, + link->link.prog->aux->name, + active, + funcs[i].prio); + } } static struct tracepoint_func *
@@ -298,6 +308,8 @@ static enum tp_func_state nr_func_state(const struct tracepoint_func *tp_funcs) { if (!tp_funcs) return TP_FUNC_0; + if (!tp_funcs[0].func) + return TP_FUNC_0; if (!tp_funcs[1].func) return TP_FUNC_1; if (!tp_funcs[2].func)
The information in this email is confidential and may be legally privileged. It is intended solely for the addressee and access to it by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken based on it, is strictly prohibited and may be unlawful.
syzbot
syzbotRe: [syzbot] Re: [email protected]
In reply to syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: Re: [email protected]
Author: [email protected]
#syz test https://linux.googlesource.com/linux/kernel/git/torvalds/linux e377d803b65ee4130213b3c041fc25fdfec1bd90
kernel/trace/bpf_trace.c +11 -2
@@ -2393,12 +2393,21 @@ void __bpf_trace_run(struct cant_sleep(); // return if instrumentation disabled, see: bpf_disable_instrumentation - if (unlikely(__this_cpu_read(bpf_prog_active))) { + int instrumentation = unlikely(__this_cpu_read(bpf_prog_active)); + if (instrumentation) { + printk("SKIP FOR INSTRUMENTATION: %s > %s > %p /%i ==============\n", + prog->aux->name, + link->btp->tp->name, prog, instrumentation); bpf_prog_inc_misses_counter(prog); return; } - if (unlikely(this_cpu_inc_return(*(prog->active)) != 1)) { + int active = this_cpu_inc_return(*(prog->active)); + // printk("%s > %s > %p /%i\n", prog->aux->name, link->btp->tp->name, prog, active); + if (active != 1) { + printk("SKIP FOR ACTIVE: %s > %s > %p /%i =======================\n", + prog->aux->name, + link->btp->tp->name, prog, active); bpf_prog_inc_misses_counter(prog); goto out; }
kernel/tracepoint.c +2 -0
@@ -298,6 +308,8 @@ static enum tp_func_state nr_func_state(const { if (!tp_funcs) return TP_FUNC_0; + if (!tp_funcs[0].func) + return TP_FUNC_0; if (!tp_funcs[1].func) return TP_FUNC_1; if (!tp_funcs[2].func)
--
The information in this email is confidential and may be legally privileged. It is intended solely for the addressee and access to it by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken based on it, is strictly prohibited and may be unlawful.
syzbot
syzbotRe: [syzbot] Re: [email protected]
In reply to syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: Re: [email protected]
Author: [email protected]
#syz test https://linux.googlesource.com/linux/kernel/git/torvalds/linux e377d803b65ee4130213b3c041fc25fdfec1bd90
--- a/kernel/trace/bpf_trace.c
+++ b/kernel/trace/bpf_trace.c
cant_sleep();
// return if instrumentation disabled, see: bpf_disable_instrumentation
- if (unlikely(__this_cpu_read(bpf_prog_active))) {
+ int instrumentation = unlikely(__this_cpu_read(bpf_prog_active)); + if (instrumentation) {
+ printk("SKIP FOR INSTRUMENTATION: %s > %s > %p /%i ==============\n", + prog->aux->name,
+ link->btp->tp->name, prog, instrumentation);
bpf_prog_inc_misses_counter(prog);
return;
}
- if (unlikely(this_cpu_inc_return(*(prog->active)) != 1)) {
+ int active = this_cpu_inc_return(*(prog->active));
+ // printk("%s > %s > %p /%i\n", prog->aux->name, link->btp->tp->name, prog, active); + if (active != 1) {
+ printk("SKIP FOR ACTIVE: %s > %s > %p /%i =======================\n", + prog->aux->name,
+ link->btp->tp->name, prog, active);
bpf_prog_inc_misses_counter(prog);
goto out;
}
--- a/kernel/tracepoint.c
+++ b/kernel/tracepoint.c
{
if (!tp_funcs)
return TP_FUNC_0;
+ if (!tp_funcs[0].func)
+ return TP_FUNC_0;
if (!tp_funcs[1].func)
return TP_FUNC_1;
if (!tp_funcs[2].func)
--
The information in this email is confidential and may be legally privileged. It is intended solely for the addressee and access to it by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken based on it, is strictly prohibited and may be unlawful.
syzbot
syzbotRe: [syzbot] Re: [email protected]
In reply to syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: Re: [email protected]
Author: [email protected]
#syz test: https://linux.googlesource.com/linux/kernel/git/torvalds/linux e377d803b65ee4130213b3c041fc25fdfec1bd90
kernel/trace/bpf_trace.c +11 -2
@@ -2393,12 +2393,21 @@ void __bpf_trace_run(struct bpf_raw_tp_link *link, u64 *args)cant_sleep ();// return if instrumentation disabled, see: bpf_disable_instrumentation -if (unlikely (__this_cpu_read (bpf_prog_active))) { +int instrumentation =unlikely (__this_cpu_read (bpf_prog_active)); +if (instrumentation) { +printk ("SKIP FOR INSTRUMENTATION: %s > %s > %p /%i ==============\n" , + prog->aux->name, + link->btp->tp->name, prog, instrumentation);bpf_prog_inc_misses_counter (prog);return ; } -if (unlikely (this_cpu_inc_return (*(prog->active)) !=1 )) { +int active =this_cpu_inc_return (*(prog->active)); +// printk("%s > %s > %p /%i\n", prog->aux->name, link->btp->tp->name, prog, active); +if (active !=1 ) { +printk ("SKIP FOR ACTIVE: %s > %s > %p /%i =======================\n" , + prog->aux->name, + link->btp->tp->name, prog, active);bpf_prog_inc_misses_counter (prog); goto out; }
kernel/tracepoint.c +0 -0
@@ -298,6 +308,8 @@ static enum tp_func_state nr_func_state(const struct tracepoint_func *tp_funcs)
{
if (!tp_funcs)
return TP_FUNC_0;
+ if (!tp_funcs[0].func)
+ return TP_FUNC_0;
if (!tp_funcs[1].func)
return TP_FUNC_1;
if (!tp_funcs[2].func)--
The information in this email is confidential and may be legally privileged. It is intended solely for the addressee and access to it by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken based on it, is strictly prohibited and may be unlawful.
syzbot
syzbotRe: [syzbot] Re: [email protected]
In reply to syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: Re: [email protected]
Author: [email protected]
#syz test: https://linux.googlesource.com/linux/kernel/git/torvalds/linux e377d803b65ee4130213b3c041fc25fdfec1bd90
kernel/trace/bpf_trace.c +11 -2
@@ -2393,12 +2393,21 @@ void __bpf_trace_run(struct bpf_raw_tp_link *link, u64 *args)cant_sleep ();// return if instrumentation disabled, see: bpf_disable_instrumentation -if (unlikely (__this_cpu_read (bpf_prog_active))) { +int instrumentation =unlikely (__this_cpu_read (bpf_prog_active)); +if (instrumentation) { +printk ("SKIP FOR INSTRUMENTATION: %s > %s > %p /%i ==============\n" , + prog->aux->name, + link->btp->tp->name, prog, instrumentation);bpf_prog_inc_misses_counter (prog);return ; } -if (unlikely (this_cpu_inc_return (*(prog->active)) !=1 )) { +int active =this_cpu_inc_return (*(prog->active)); +// printk("%s > %s > %p /%i\n", prog->aux->name, link->btp->tp->name, prog, active); +if (active !=1 ) { +printk ("SKIP FOR ACTIVE: %s > %s > %p /%i =======================\n" , + prog->aux->name, + link->btp->tp->name, prog, active);bpf_prog_inc_misses_counter (prog); goto out; }
kernel/tracepoint.c +0 -0
@@ -298,6 +308,8 @@ static enum tp_func_state nr_func_state(const struct tracepoint_func *tp_funcs)
{
if (!tp_funcs)
return TP_FUNC_0;
+ if (!tp_funcs[0].func)
+ return TP_FUNC_0;
if (!tp_funcs[1].func)
return TP_FUNC_1;
if (!tp_funcs[2].func)--
The information in this email is confidential and may be legally privileged. It is intended solely for the addressee and access to it by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken based on it, is strictly prohibited and may be unlawful.
syzbot
syzbotRe: [syzbot] Re: [email protected]
In reply to syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: Re: [email protected]
Author: [email protected]
#syz test: https://linux.googlesource.com/linux/kernel/git/torvalds/linux e377d803b65ee4130213b3c041fc25fdfec1bd90
kernel/trace/bpf_trace.c +11 -2
@@ -2393,12 +2393,21 @@ void __bpf_trace_run(struct bpf_raw_tp_link *link, u64 *args)cant_sleep ();// return if instrumentation disabled, see: bpf_disable_instrumentation -if (unlikely (__this_cpu_read (bpf_prog_active))) { +int instrumentation =unlikely (__this_cpu_read (bpf_prog_active)); +if (instrumentation) { +printk ("SKIP FOR INSTRUMENTATION: %s > %s > %p /%i ==============\n" , + prog->aux->name, + link->btp->tp->name, prog, instrumentation);bpf_prog_inc_misses_counter (prog);return ; } -if (unlikely (this_cpu_inc_return (*(prog->active)) !=1 )) { +int active =this_cpu_inc_return (*(prog->active)); +printk ("%s > %s > %p /%i\n" , prog->aux->name, link->btp->tp->name, prog, active); +if (active !=1 ) { +printk ("SKIP FOR ACTIVE: %s > %s > %p /%i =======================\n" , + prog->aux->name, + link->btp->tp->name, prog, active);bpf_prog_inc_misses_counter (prog); goto out; }
kernel/tracepoint.c +2 -0
@@ -298,6 +308,8 @@ static enum tp_func_state nr_func_state(const struct tracepoint_func *tp_funcs) {if (!tp_funcs)return TP_FUNC_0 ; +if (!tp_funcs[0 ].func) +return TP_FUNC_0 ;if (!tp_funcs[1 ].func)return TP_FUNC_1 ;if (!tp_funcs[2 ].func)
--
The information in this email is confidential and may be legally privileged. It is intended solely for the addressee and access to it by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken based on it, is strictly prohibited and may be unlawful.
syzbot
syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: possible deadlock in trie_delete_elem
Author: [email protected]
#syz test https://linux.googlesource.com/linux/kernel/git/torvalds/linux e377d803b65ee4130213b3c041fc25fdfec1bd90
kernel/trace/bpf_trace.c +11 -2
@@ -2393,12 +2393,21 @@ void __bpf_trace_run(struct bpf_raw_tp_link *link, u64 *args)cant_sleep ();// return if instrumentation disabled, see: bpf_disable_instrumentation -if (unlikely (__this_cpu_read (bpf_prog_active))) { +int instrumentation =unlikely (__this_cpu_read (bpf_prog_active)); +if (instrumentation) { +printk ("SKIP FOR INSTRUMENTATION: %s > %s > %p /%i ==============\n" , + prog->aux->name, + link->btp->tp->name, prog, instrumentation);bpf_prog_inc_misses_counter (prog);return ; } -if (unlikely (this_cpu_inc_return (*(prog->active)) !=1 )) { +int active =this_cpu_inc_return (*(prog->active)); +// printk("%s > %s > %p /%i\n", prog->aux->name, link->btp->tp->name, prog, active); +if (active !=1 ) { +printk ("SKIP FOR ACTIVE: %s > %s > %p /%i =======================\n" , + prog->aux->name, + link->btp->tp->name, prog, active);bpf_prog_inc_misses_counter (prog); goto out; }
kernel/tracepoint.c +13 -2
@@ -168,12 +169,21 @@ static inline void release_probes(struct tracepoint_func *old)static void debug_print_probes (struct tracepoint_func *funcs) {int i; +struct bpf_raw_tp_link *link;if (!tracepoint_debug || !funcs)return ; -for (i =0 ; funcs[i].func; i++) -printk (KERN_DEBUG "Probe %d : %p\n" , i, funcs[i].func); +for (i =0 ; funcs[i].func; i++) { + link = funcs[i].data; +int active =this_cpu_read (*(link->link.prog->active)); +printk ("Probe %d : %p / %p: %s/%d / %i\n" , i, + funcs[i].func, + link, + link->link.prog->aux->name, + active, + funcs[i].prio); + } } static struct tracepoint_func *
@@ -298,6 +308,8 @@ static enum tp_func_state nr_func_state(const struct tracepoint_func *tp_funcs) {if (!tp_funcs)return TP_FUNC_0 ; +if (!tp_funcs[0 ].func) +return TP_FUNC_0 ;if (!tp_funcs[1 ].func)return TP_FUNC_1 ;if (!tp_funcs[2 ].func)
The information in this email is confidential and may be legally privileged. It is intended solely for the addressee and access to it by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken based on it, is strictly prohibited and may be unlawful.
syzbot
syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: possible deadlock in trie_delete_elem
Author: [email protected]
#syz test: https://linux.googlesource.com/linux/kernel/git/torvalds/linux e377d803b65ee4130213b3c041fc25fdfec1bd90
kernel/trace/bpf_trace.c +11 -2
@@ -2393,12 +2393,21 @@ void __bpf_trace_run(struct bpf_raw_tp_link *link, u64 *args)cant_sleep ();// return if instrumentation disabled, see: bpf_disable_instrumentation -if (unlikely (__this_cpu_read (bpf_prog_active))) { +int instrumentation =unlikely (__this_cpu_read (bpf_prog_active)); +if (instrumentation) { +printk ("SKIP FOR INSTRUMENTATION: %s > %s > %p /%i ==============\n" , + prog->aux->name, + link->btp->tp->name, prog, instrumentation);bpf_prog_inc_misses_counter (prog);return ; } -if (unlikely (this_cpu_inc_return (*(prog->active)) !=1 )) { +int active =this_cpu_inc_return (*(prog->active)); +// printk("%s > %s > %p /%i\n", prog->aux->name, link->btp->tp->name, prog, active); +if (active !=1 ) { +printk ("SKIP FOR ACTIVE: %s > %s > %p /%i =======================\n" , + prog->aux->name, + link->btp->tp->name, prog, active);bpf_prog_inc_misses_counter (prog); goto out; }
kernel/tracepoint.c +13 -2
@@ -168,12 +169,21 @@ static inline void release_probes(struct tracepoint_func *old)static void debug_print_probes (struct tracepoint_func *funcs) {int i; +struct bpf_raw_tp_link *link;if (!tracepoint_debug || !funcs)return ; -for (i =0 ; funcs[i].func; i++) -printk (KERN_DEBUG "Probe %d : %p\n" , i, funcs[i].func); +for (i =0 ; funcs[i].func; i++) { + link = funcs[i].data; +int active =this_cpu_read (*(link->link.prog->active)); +printk ("Probe %d : %p / %p: %s/%d / %i\n" , i, + funcs[i].func, + link, + link->link.prog->aux->name, + active, + funcs[i].prio); + } } static struct tracepoint_func *
@@ -298,6 +308,8 @@ static enum tp_func_state nr_func_state(const struct tracepoint_func *tp_funcs) {if (!tp_funcs)return TP_FUNC_0 ; +if (!tp_funcs[0 ].func) +return TP_FUNC_0 ;if (!tp_funcs[1 ].func)return TP_FUNC_1 ;if (!tp_funcs[2 ].func)
syzbot
syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: possible deadlock in trie_delete_elem
Author: [email protected]
#syz test: https://linux.googlesource.com/linux/kernel/git/torvalds/linux e377d803b65ee4130213b3c041fc25fdfec1bd90
--- kernel/trace/bpf_trace.c | 13 +++++++++++-- kernel/tracepoint.c | 15 +++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-)
kernel/trace/bpf_trace.c +11 -2
@@ -2393,12 +2393,21 @@ void __bpf_trace_run(struct bpf_raw_tp_link *link, u64 *args)cant_sleep ();// return if instrumentation disabled, see: bpf_disable_instrumentation -if (unlikely (__this_cpu_read (bpf_prog_active))) { +int instrumentation =unlikely (__this_cpu_read (bpf_prog_active)); +if (instrumentation) { +printk ("SKIP FOR INSTRUMENTATION: %s > %s > %p /%i ==============\n" , + prog->aux->name, + link->btp->tp->name, prog, instrumentation);bpf_prog_inc_misses_counter (prog);return ; } -if (unlikely (this_cpu_inc_return (*(prog->active)) !=1 )) { +int active =this_cpu_inc_return (*(prog->active)); +// printk("%s > %s > %p /%i\n", prog->aux->name, link->btp->tp->name, prog, active); +if (active !=1 ) { +printk ("SKIP FOR ACTIVE: %s > %s > %p /%i =======================\n" , + prog->aux->name, + link->btp->tp->name, prog, active);bpf_prog_inc_misses_counter (prog); goto out; }
kernel/tracepoint.c +13 -2
@@ -168,12 +168,21 @@ static inline void release_probes(struct tracepoint_func *old)static void debug_print_probes (struct tracepoint_func *funcs) {int i; +struct bpf_raw_tp_link *link;if (!tracepoint_debug || !funcs)return ; -for (i =0 ; funcs[i].func; i++) -printk (KERN_DEBUG "Probe %d : %p\n" , i, funcs[i].func); +for (i =0 ; funcs[i].func; i++) { + link = funcs[i].data; +int active =this_cpu_read (*(link->link.prog->active)); +printk ("Probe %d : %p / %p: %s/%d / %i\n" , i, + funcs[i].func, + link, + link->link.prog->aux->name, + active, + funcs[i].prio); + } } static struct tracepoint_func *
@@ -298,6 +307,8 @@ static enum tp_func_state nr_func_state(const struct tracepoint_func *tp_funcs) {if (!tp_funcs)return TP_FUNC_0 ; +if (!tp_funcs[0 ].func) +return TP_FUNC_0 ;if (!tp_funcs[1 ].func)return TP_FUNC_1 ;if (!tp_funcs[2 ].func)
--
2.34.1
syzbot
syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: possible deadlock in trie_delete_elem
Author: [email protected]
#syz test: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git c3f38fa61af77b49866b006939479069cd451173
--- kernel/trace/bpf_trace.c | 18 +++++++++++++++++- kernel/tracepoint.c | 15 +++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-)
kernel/trace/bpf_trace.c +17 -1
@@ -2391,7 +2391,23 @@ void __bpf_trace_run(struct bpf_raw_tp_link *link, u64 *args)struct bpf_trace_run_ctx run_ctx;cant_sleep (); -if (unlikely (this_cpu_inc_return (*(prog->active)) !=1 )) { + +// return if instrumentation disabled, see: bpf_disable_instrumentation +int instrumentation =unlikely (__this_cpu_read (bpf_prog_active)); +if (instrumentation) { +printk ("SKIP FOR INSTRUMENTATION: %s > %s > %p /%i ==============\n" , + prog->aux->name, + link->btp->tp->name, prog, instrumentation); +bpf_prog_inc_misses_counter (prog); +return ; + } + +int active =this_cpu_inc_return (*(prog->active)); +// printk("%s > %s > %p /%i\n", prog->aux->name, link->btp->tp->name, prog, active); +if (active !=1 ) { +printk ("SKIP FOR ACTIVE: %s > %s > %p /%i =======================\n" , + prog->aux->name, + link->btp->tp->name, prog, active);bpf_prog_inc_misses_counter (prog); goto out; }
kernel/tracepoint.c +13 -2
@@ -168,12 +168,21 @@ static inline void release_probes(struct tracepoint_func *old)static void debug_print_probes (struct tracepoint_func *funcs) {int i; +struct bpf_raw_tp_link *link;if (!tracepoint_debug || !funcs)return ; -for (i =0 ; funcs[i].func; i++) -printk (KERN_DEBUG "Probe %d : %p\n" , i, funcs[i].func); +for (i =0 ; funcs[i].func; i++) { + link = funcs[i].data; +int active =this_cpu_read (*(link->link.prog->active)); +printk ("Probe %d : %p / %p: %s/%d / %i\n" , i, + funcs[i].func, + link, + link->link.prog->aux->name, + active, + funcs[i].prio); + } } static struct tracepoint_func *
@@ -298,6 +307,8 @@ static enum tp_func_state nr_func_state(const struct tracepoint_func *tp_funcs) {if (!tp_funcs)return TP_FUNC_0 ; +if (!tp_funcs[0 ].func) +return TP_FUNC_0 ;if (!tp_funcs[1 ].func)return TP_FUNC_1 ;if (!tp_funcs[2 ].func)
Signature · 1 line
2.34.1
kernel test robot
build botkernel test robot noticed the following build errors:
Hi syzbot,
kernel test robot noticed the following build errors:
[auto build test ERROR on bpf-next/master]
[also build test ERROR on bpf/master linus/master v6.10-rc2 next-20240606] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/syzbot/possible-deadlock-in-trie_delete_elem/20240606-230435 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master patch link: https://lore.kernel.org/r/000000000000277099061a394d13%40google.com patch subject: possible deadlock in trie_delete_elem config: sh-defconfig (https://download.01.org/0day-ci/archive/20240607/[email protected]/config) compiler: sh4-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240607/[email protected]/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
All errors (new ones prefixed by >>):
In file included from include/asm-generic/percpu.h:7,
from ./arch/sh/include/generated/asm/percpu.h:1,
from include/linux/irqflags.h:19,
from include/asm-generic/cmpxchg-local.h:6,
from arch/sh/include/asm/cmpxchg.h:74,
from arch/sh/include/asm/atomic.h:19,
from include/linux/atomic.h:7,
from include/asm-generic/bitops/lock.h:5,
from arch/sh/include/asm/bitops.h:63,
from include/linux/bitops.h:63,
from include/linux/log2.h:12,
from include/asm-generic/div64.h:55,
from ./arch/sh/include/generated/asm/div64.h:1,
from include/linux/math.h:6,
from include/linux/math64.h:6,
from include/linux/time.h:6,
from include/linux/stat.h:19,
from include/linux/module.h:13,
from kernel/tracepoint.c:5:
kernel/tracepoint.c: In function 'debug_print_probes':
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/percpu-defs.h:318:16: note: in definition of macro '__pcpu_size_call_return'
318 | typeof(variable) pscr_ret__; \
| ^~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/percpu-defs.h:219:54: note: in definition of macro '__verify_pcpu_ptr'
219 | const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL; \
| ^~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/percpu-defs.h:320:23: note: in definition of macro '__pcpu_size_call_return'
320 | switch(sizeof(variable)) { \
| ^~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/asm-generic/percpu.h:144:16: note: in definition of macro 'this_cpu_generic_read'
144 | typeof(pcp) __ret; \
| ^~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
In file included from <command-line>:
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:454:17: note: in definition of macro '__native_word'
454 | (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
| ^
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:454:46: note: in definition of macro '__native_word'
454 | (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
| ^
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:455:17: note: in definition of macro '__native_word'
455 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
| ^
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:455:45: note: in definition of macro '__native_word'
455 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
| ^
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/asm-generic/percpu.h:125:16: note: in definition of macro '__this_cpu_generic_read_nopreempt'
125 | typeof(pcp) ___ret; \
| ^~~
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:467:23: note: in definition of macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:487:9: note: in expansion of macro '_compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:18: note: in expansion of macro 'READ_ONCE'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~
include/linux/percpu-defs.h:241:9: note: in expansion of macro '__verify_pcpu_ptr'
241 | __verify_pcpu_ptr(ptr); \
| ^~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:29: note: in expansion of macro 'raw_cpu_ptr'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~~~
include/asm-generic/percpu.h:146:25: note: in expansion of macro '__this_cpu_generic_read_nopreempt'
146 | __ret = __this_cpu_generic_read_nopreempt(pcp); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:467:23: note: in definition of macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:487:9: note: in expansion of macro '_compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:18: note: in expansion of macro 'READ_ONCE'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~
include/linux/percpu-defs.h:231:9: note: in expansion of macro 'RELOC_HIDE'
231 | RELOC_HIDE((typeof(*(__p)) __kernel __force *)(__p), (__offset))
| ^~~~~~~~~~
include/asm-generic/percpu.h:44:31: note: in expansion of macro 'SHIFT_PERCPU_PTR'
44 | #define arch_raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
| ^~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:242:9: note: in expansion of macro 'arch_raw_cpu_ptr'
242 | arch_raw_cpu_ptr(ptr); \
| ^~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:29: note: in expansion of macro 'raw_cpu_ptr'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~~~
include/asm-generic/percpu.h:146:25: note: in expansion of macro '__this_cpu_generic_read_nopreempt'
146 | __ret = __this_cpu_generic_read_nopreempt(pcp); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:467:23: note: in definition of macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:487:9: note: in expansion of macro '_compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:18: note: in expansion of macro 'READ_ONCE'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~
include/linux/percpu-defs.h:231:9: note: in expansion of macro 'RELOC_HIDE'
231 | RELOC_HIDE((typeof(*(__p)) __kernel __force *)(__p), (__offset))
| ^~~~~~~~~~
include/asm-generic/percpu.h:44:31: note: in expansion of macro 'SHIFT_PERCPU_PTR'
44 | #define arch_raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
| ^~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:242:9: note: in expansion of macro 'arch_raw_cpu_ptr'
242 | arch_raw_cpu_ptr(ptr); \
| ^~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:29: note: in expansion of macro 'raw_cpu_ptr'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~~~
include/asm-generic/percpu.h:146:25: note: in expansion of macro '__this_cpu_generic_read_nopreempt'
146 | __ret = __this_cpu_generic_read_nopreempt(pcp); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:467:23: note: in definition of macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:487:9: note: in expansion of macro '_compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:18: note: in expansion of macro 'READ_ONCE'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~
include/linux/percpu-defs.h:231:9: note: in expansion of macro 'RELOC_HIDE'
231 | RELOC_HIDE((typeof(*(__p)) __kernel __force *)(__p), (__offset))
| ^~~~~~~~~~
include/asm-generic/percpu.h:44:31: note: in expansion of macro 'SHIFT_PERCPU_PTR'
44 | #define arch_raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
| ^~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:242:9: note: in expansion of macro 'arch_raw_cpu_ptr'
242 | arch_raw_cpu_ptr(ptr); \
| ^~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:29: note: in expansion of macro 'raw_cpu_ptr'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~~~
include/asm-generic/percpu.h:146:25: note: in expansion of macro '__this_cpu_generic_read_nopreempt'
146 | __ret = __this_cpu_generic_read_nopreempt(pcp); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:467:23: note: in definition of macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:487:9: note: in expansion of macro '_compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:18: note: in expansion of macro 'READ_ONCE'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~
include/linux/percpu-defs.h:231:9: note: in expansion of macro 'RELOC_HIDE'
231 | RELOC_HIDE((typeof(*(__p)) __kernel __force *)(__p), (__offset))
| ^~~~~~~~~~
include/asm-generic/percpu.h:44:31: note: in expansion of macro 'SHIFT_PERCPU_PTR'
44 | #define arch_raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
| ^~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:242:9: note: in expansion of macro 'arch_raw_cpu_ptr'
242 | arch_raw_cpu_ptr(ptr); \
| ^~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:29: note: in expansion of macro 'raw_cpu_ptr'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~~~
include/asm-generic/percpu.h:146:25: note: in expansion of macro '__this_cpu_generic_read_nopreempt'
146 | __ret = __this_cpu_generic_read_nopreempt(pcp); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:467:23: note: in definition of macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:487:9: note: in expansion of macro '_compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:18: note: in expansion of macro 'READ_ONCE'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~
include/linux/percpu-defs.h:241:9: note: in expansion of macro '__verify_pcpu_ptr'
241 | __verify_pcpu_ptr(ptr); \
| ^~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:29: note: in expansion of macro 'raw_cpu_ptr'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~~~
include/asm-generic/percpu.h:146:25: note: in expansion of macro '__this_cpu_generic_read_nopreempt'
146 | __ret = __this_cpu_generic_read_nopreempt(pcp); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:467:23: note: in definition of macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:487:9: note: in expansion of macro '_compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:18: note: in expansion of macro 'READ_ONCE'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~
include/linux/percpu-defs.h:231:9: note: in expansion of macro 'RELOC_HIDE'
231 | RELOC_HIDE((typeof(*(__p)) __kernel __force *)(__p), (__offset))
| ^~~~~~~~~~
include/asm-generic/percpu.h:44:31: note: in expansion of macro 'SHIFT_PERCPU_PTR'
44 | #define arch_raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
| ^~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:242:9: note: in expansion of macro 'arch_raw_cpu_ptr'
242 | arch_raw_cpu_ptr(ptr); \
| ^~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:29: note: in expansion of macro 'raw_cpu_ptr'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~~~
include/asm-generic/percpu.h:146:25: note: in expansion of macro '__this_cpu_generic_read_nopreempt'
146 | __ret = __this_cpu_generic_read_nopreempt(pcp); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:467:23: note: in definition of macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:487:9: note: in expansion of macro '_compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:18: note: in expansion of macro 'READ_ONCE'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~
include/linux/percpu-defs.h:231:9: note: in expansion of macro 'RELOC_HIDE'
231 | RELOC_HIDE((typeof(*(__p)) __kernel __force *)(__p), (__offset))
| ^~~~~~~~~~
include/asm-generic/percpu.h:44:31: note: in expansion of macro 'SHIFT_PERCPU_PTR'
44 | #define arch_raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
| ^~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:242:9: note: in expansion of macro 'arch_raw_cpu_ptr'
242 | arch_raw_cpu_ptr(ptr); \
| ^~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:29: note: in expansion of macro 'raw_cpu_ptr'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~~~
include/asm-generic/percpu.h:146:25: note: in expansion of macro '__this_cpu_generic_read_nopreempt'
146 | __ret = __this_cpu_generic_read_nopreempt(pcp); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:467:23: note: in definition of macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:487:9: note: in expansion of macro '_compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:18: note: in expansion of macro 'READ_ONCE'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~
include/linux/percpu-defs.h:231:9: note: in expansion of macro 'RELOC_HIDE'
231 | RELOC_HIDE((typeof(*(__p)) __kernel __force *)(__p), (__offset))
| ^~~~~~~~~~
include/asm-generic/percpu.h:44:31: note: in expansion of macro 'SHIFT_PERCPU_PTR'
44 | #define arch_raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
| ^~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:242:9: note: in expansion of macro 'arch_raw_cpu_ptr'
242 | arch_raw_cpu_ptr(ptr); \
| ^~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:29: note: in expansion of macro 'raw_cpu_ptr'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~~~
include/asm-generic/percpu.h:146:25: note: in expansion of macro '__this_cpu_generic_read_nopreempt'
146 | __ret = __this_cpu_generic_read_nopreempt(pcp); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:467:23: note: in definition of macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:487:9: note: in expansion of macro '_compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:18: note: in expansion of macro 'READ_ONCE'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~
include/linux/percpu-defs.h:231:9: note: in expansion of macro 'RELOC_HIDE'
231 | RELOC_HIDE((typeof(*(__p)) __kernel __force *)(__p), (__offset))
| ^~~~~~~~~~
include/asm-generic/percpu.h:44:31: note: in expansion of macro 'SHIFT_PERCPU_PTR'
44 | #define arch_raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
| ^~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:242:9: note: in expansion of macro 'arch_raw_cpu_ptr'
242 | arch_raw_cpu_ptr(ptr); \
| ^~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:29: note: in expansion of macro 'raw_cpu_ptr'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~~~
include/asm-generic/percpu.h:146:25: note: in expansion of macro '__this_cpu_generic_read_nopreempt'
146 | __ret = __this_cpu_generic_read_nopreempt(pcp); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
>> kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:467:23: note: in definition of macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:487:9: note: in expansion of macro '_compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:18: note: in expansion of macro 'READ_ONCE'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~
include/linux/percpu-defs.h:241:9: note: in expansion of macro '__verify_pcpu_ptr'
241 | __verify_pcpu_ptr(ptr); \
| ^~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:29: note: in expansion of macro 'raw_cpu_ptr'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~~~
include/asm-generic/percpu.h:146:25: note: in expansion of macro '__this_cpu_generic_read_nopreempt'
146 | __ret = __this_cpu_generic_read_nopreempt(pcp); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:467:23: note: in definition of macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:487:9: note: in expansion of macro '_compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:28: note: in expansion of macro '__native_word'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:18: note: in expansion of macro 'READ_ONCE'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~
include/linux/percpu-defs.h:231:9: note: in expansion of macro 'RELOC_HIDE'
231 | RELOC_HIDE((typeof(*(__p)) __kernel __force *)(__p), (__offset))
| ^~~~~~~~~~
include/asm-generic/percpu.h:44:31: note: in expansion of macro 'SHIFT_PERCPU_PTR'
44 | #define arch_raw_cpu_ptr(ptr) SHIFT_PERCPU_PTR(ptr, __my_cpu_offset)
| ^~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:242:9: note: in expansion of macro 'arch_raw_cpu_ptr'
242 | arch_raw_cpu_ptr(ptr); \
| ^~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:127:29: note: in expansion of macro 'raw_cpu_ptr'
127 | ___ret = READ_ONCE(*raw_cpu_ptr(&(pcp))); \
| ^~~~~~~~~~~
include/asm-generic/percpu.h:146:25: note: in expansion of macro '__this_cpu_generic_read_nopreempt'
146 | __ret = __this_cpu_generic_read_nopreempt(pcp); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/percpu.h:375:41: note: in expansion of macro 'this_cpu_generic_read'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:30: note: in expansion of macro 'this_cpu_read_1'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~
include/linux/percpu-defs.h:489:41: note: in expansion of macro '__pcpu_size_call_return'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~
kernel/tracepoint.c:178:30: note: in expansion of macro 'this_cpu_read'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~
kernel/tracepoint.c:178:50: error: invalid use of undefined type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~
include/linux/compiler_types.h:467:23: note: in definition of macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
include/linux/compiler_types.h:487:9: note: in expansion of macro '_compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \vim +178 kernel/tracepoint.c
> 5 #include <linux/module.h>
6 #include <linux/mutex.h>
7 #include <linux/types.h>
8 #include <linux/jhash.h>
9 #include <linux/list.h>
10 #include <linux/rcupdate.h>
11 #include <linux/tracepoint.h>
12 #include <linux/err.h>
13 #include <linux/slab.h>
14 #include <linux/sched/signal.h>
15 #include <linux/sched/task.h>
16 #include <linux/static_key.h>
17
18 enum tp_func_state {
19 TP_FUNC_0,
20 TP_FUNC_1,
21 TP_FUNC_2,
22 TP_FUNC_N,
23 };
24
25 extern tracepoint_ptr_t __start___tracepoints_ptrs[];
26 extern tracepoint_ptr_t __stop___tracepoints_ptrs[];
27
28 DEFINE_SRCU(tracepoint_srcu);
29 EXPORT_SYMBOL_GPL(tracepoint_srcu);
30
31 enum tp_transition_sync {
32 TP_TRANSITION_SYNC_1_0_1,
33 TP_TRANSITION_SYNC_N_2_1,
34
35 _NR_TP_TRANSITION_SYNC,
36 };
37
38 struct tp_transition_snapshot {
39 unsigned long rcu;
40 unsigned long srcu;
41 bool ongoing;
42 };
43
44 /* Protected by tracepoints_mutex */
45 static struct tp_transition_snapshot tp_transition_snapshot[_NR_TP_TRANSITION_SYNC];
46
47 static void tp_rcu_get_state(enum tp_transition_sync sync)
48 {
49 struct tp_transition_snapshot *snapshot = &tp_transition_snapshot[sync];
50
51 /* Keep the latest get_state snapshot. */
52 snapshot->rcu = get_state_synchronize_rcu();
53 snapshot->srcu = start_poll_synchronize_srcu(&tracepoint_srcu);
54 snapshot->ongoing = true;
55 }
56
57 static void tp_rcu_cond_sync(enum tp_transition_sync sync)
58 {
59 struct tp_transition_snapshot *snapshot = &tp_transition_snapshot[sync];
60
61 if (!snapshot->ongoing)
62 return;
63 cond_synchronize_rcu(snapshot->rcu);
64 if (!poll_state_synchronize_srcu(&tracepoint_srcu, snapshot->srcu))
65 synchronize_srcu(&tracepoint_srcu);
66 snapshot->ongoing = false;
67 }
68
69 /* Set to 1 to enable tracepoint debug output */
70 static const int tracepoint_debug;
71
72 #ifdef CONFIG_MODULES
73 /*
74 * Tracepoint module list mutex protects the local module list.
75 */
76 static DEFINE_MUTEX(tracepoint_module_list_mutex);
77
78 /* Local list of struct tp_module */
79 static LIST_HEAD(tracepoint_module_list);
80 #endif /* CONFIG_MODULES */
81
82 /*
83 * tracepoints_mutex protects the builtin and module tracepoints.
84 * tracepoints_mutex nests inside tracepoint_module_list_mutex.
85 */
86 static DEFINE_MUTEX(tracepoints_mutex);
87
88 static struct rcu_head *early_probes;
89 static bool ok_to_free_tracepoints;
90
91 /*
92 * Note about RCU :
93 * It is used to delay the free of multiple probes array until a quiescent
94 * state is reached.
95 */
96 struct tp_probes {
97 struct rcu_head rcu;
98 struct tracepoint_func probes[];
99 };
100
101 /* Called in removal of a func but failed to allocate a new tp_funcs */
102 static void tp_stub_func(void)
103 {
104 return;
105 }
106
107 static inline void *allocate_probes(int count)
108 {
109 struct tp_probes *p = kmalloc(struct_size(p, probes, count),
110 GFP_KERNEL);
111 return p == NULL ? NULL : p->probes;
112 }
113
114 static void srcu_free_old_probes(struct rcu_head *head)
115 {
116 kfree(container_of(head, struct tp_probes, rcu));
117 }
118
119 static void rcu_free_old_probes(struct rcu_head *head)
120 {
121 call_srcu(&tracepoint_srcu, head, srcu_free_old_probes);
122 }
123
124 static __init int release_early_probes(void)
125 {
126 struct rcu_head *tmp;
127
128 ok_to_free_tracepoints = true;
129
130 while (early_probes) {
131 tmp = early_probes;
132 early_probes = tmp->next;
133 call_rcu(tmp, rcu_free_old_probes);
134 }
135
136 return 0;
137 }
138
139 /* SRCU is initialized at core_initcall */
140 postcore_initcall(release_early_probes);
141
142 static inline void release_probes(struct tracepoint_func *old)
143 {
144 if (old) {
145 struct tp_probes *tp_probes = container_of(old,
146 struct tp_probes, probes[0]);
147
148 /*
149 * We can't free probes if SRCU is not initialized yet.
150 * Postpone the freeing till after SRCU is initialized.
151 */
152 if (unlikely(!ok_to_free_tracepoints)) {
153 tp_probes->rcu.next = early_probes;
154 early_probes = &tp_probes->rcu;
155 return;
156 }
157
158 /*
159 * Tracepoint probes are protected by both sched RCU and SRCU,
160 * by calling the SRCU callback in the sched RCU callback we
161 * cover both cases. So let us chain the SRCU and sched RCU
162 * callbacks to wait for both grace periods.
163 */
164 call_rcu(&tp_probes->rcu, rcu_free_old_probes);
165 }
166 }
167
168 static void debug_print_probes(struct tracepoint_func *funcs)
169 {
170 int i;
171 struct bpf_raw_tp_link *link;
172
173 if (!tracepoint_debug || !funcs)
174 return;
175
176 for (i = 0; funcs[i].func; i++) {
177 link = funcs[i].data;
> 178 int active = this_cpu_read(*(link->link.prog->active)); 179 printk("Probe %d : %p / %p: %s/%d / %i\n", i,
180 funcs[i].func,
181 link,
182 link->link.prog->aux->name,
183 active,
184 funcs[i].prio);
185 }
186 }
187
Signature · 2 lines
0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
kernel test robot
build botkernel test robot noticed the following build errors:
Hi syzbot,
kernel test robot noticed the following build errors:
[auto build test ERROR on bpf-next/master]
[also build test ERROR on bpf/master linus/master v6.10-rc2 next-20240606] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/syzbot/possible-deadlock-in-trie_delete_elem/20240606-230435 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master patch link: https://lore.kernel.org/r/000000000000277099061a394d13%40google.com patch subject: possible deadlock in trie_delete_elem config: s390-defconfig (https://download.01.org/0day-ci/archive/20240607/[email protected]/config) compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project d7d2d4f53fc79b4b58e8d8d08151b577c3699d4a) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240607/[email protected]/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
All errors (new ones prefixed by >>):
In file included from kernel/tracepoint.c:5:
In file included from include/linux/module.h:19:
In file included from include/linux/elf.h:6:
In file included from arch/s390/include/asm/elf.h:173:
In file included from arch/s390/include/asm/mmu_context.h:11:
In file included from arch/s390/include/asm/pgalloc.h:18:
In file included from include/linux/mm.h:2253:
include/linux/vmstat.h:500:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
500 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
501 | item];
| ~~~~
include/linux/vmstat.h:507:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
507 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
508 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:514:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
514 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
include/linux/vmstat.h:519:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
519 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
520 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:528:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
528 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
529 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:318:9: note: expanded from macro '__pcpu_size_call_return'
318 | typeof(variable) pscr_ret__; \
| ^~~~~~~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:319:22: note: expanded from macro '__pcpu_size_call_return'
319 | __verify_pcpu_ptr(&(variable)); \
| ^~~~~~~~
include/linux/percpu-defs.h:219:47: note: expanded from macro '__verify_pcpu_ptr'
219 | const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL; \
| ^~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:320:16: note: expanded from macro '__pcpu_size_call_return'
320 | switch(sizeof(variable)) { \
| ^~~~~~~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
include/asm-generic/percpu.h:144:9: note: expanded from macro 'this_cpu_generic_read'
144 | typeof(pcp) __ret; \
| ^~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
include/asm-generic/percpu.h:145:20: note: expanded from macro 'this_cpu_generic_read'
145 | if (__native_word(pcp)) \
| ^~~
include/linux/compiler_types.h:454:10: note: expanded from macro '__native_word'
454 | (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
| ^
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
include/asm-generic/percpu.h:145:20: note: expanded from macro 'this_cpu_generic_read'
145 | if (__native_word(pcp)) \
| ^~~
include/linux/compiler_types.h:454:39: note: expanded from macro '__native_word'
454 | (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
| ^
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
include/asm-generic/percpu.h:145:20: note: expanded from macro 'this_cpu_generic_read'
145 | if (__native_word(pcp)) \
| ^~~
include/linux/compiler_types.h:455:10: note: expanded from macro '__native_word'
455 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
| ^
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
include/asm-generic/percpu.h:145:20: note: expanded from macro 'this_cpu_generic_read'
145 | if (__native_word(pcp)) \
| ^~~
include/linux/compiler_types.h:455:38: note: expanded from macro '__native_word'
455 | sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
| ^
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
include/asm-generic/percpu.h:146:45: note: expanded from macro 'this_cpu_generic_read'
146 | __ret = __this_cpu_generic_read_nopreempt(pcp); \
| ^~~
include/asm-generic/percpu.h:125:9: note: expanded from macro '__this_cpu_generic_read_nopreempt'
125 | typeof(pcp) ___ret; \
| ^~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
note: (skipping 7 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:487:22: note: expanded from macro 'compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:475:23: note: expanded from macro '_compiletime_assert'
475 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:467:9: note: expanded from macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
note: (skipping 9 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:487:22: note: expanded from macro 'compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:475:23: note: expanded from macro '_compiletime_assert'
475 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:467:9: note: expanded from macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
note: (skipping 9 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:487:22: note: expanded from macro 'compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:475:23: note: expanded from macro '_compiletime_assert'
475 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:467:9: note: expanded from macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
note: (skipping 9 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:487:22: note: expanded from macro 'compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:475:23: note: expanded from macro '_compiletime_assert'
475 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:467:9: note: expanded from macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
note: (skipping 9 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:487:22: note: expanded from macro 'compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:475:23: note: expanded from macro '_compiletime_assert'
475 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:467:9: note: expanded from macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:16: error: indirection requires pointer operand ('void' invalid)
178 | int active = this_cpu_read(*(link->link.prog->active));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:489:29: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/percpu-defs.h:321:23: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~~~~~~~~~~
<scratch space>:68:1: note: expanded from here
68 | this_cpu_read_1
| ^
note: (skipping 6 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:487:22: note: expanded from macro 'compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler_types.h:475:23: note: expanded from macro '_compiletime_assert'
475 | __compiletime_assert(condition, msg, prefix, suffix)
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler_types.h:467:9: note: expanded from macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
note: (skipping 7 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:487:22: note: expanded from macro 'compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:475:23: note: expanded from macro '_compiletime_assert'
475 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:467:9: note: expanded from macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
note: (skipping 9 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:487:22: note: expanded from macro 'compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:475:23: note: expanded from macro '_compiletime_assert'
475 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:467:9: note: expanded from macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
note: (skipping 9 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:487:22: note: expanded from macro 'compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:475:23: note: expanded from macro '_compiletime_assert'
475 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:467:9: note: expanded from macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^
>> kernel/tracepoint.c:178:36: error: incomplete definition of type 'struct bpf_raw_tp_link'
178 | int active = this_cpu_read(*(link->link.prog->active));
| ~~~~^
include/linux/percpu-defs.h:489:69: note: expanded from macro 'this_cpu_read'
489 | #define this_cpu_read(pcp) __pcpu_size_call_return(this_cpu_read_, pcp)
| ^~~
include/linux/percpu-defs.h:321:31: note: expanded from macro '__pcpu_size_call_return'
321 | case 1: pscr_ret__ = stem##1(variable); break; \
| ^~~~~~~~
include/asm-generic/percpu.h:375:53: note: expanded from macro 'this_cpu_read_1'
375 | #define this_cpu_read_1(pcp) this_cpu_generic_read(pcp)
| ^~~
note: (skipping 9 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/compiler_types.h:487:22: note: expanded from macro 'compiletime_assert'
487 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~
include/linux/compiler_types.h:475:23: note: expanded from macro '_compiletime_assert'
475 | __compiletime_assert(condition, msg, prefix, suffix)
| ^~~~~~~~~
include/linux/compiler_types.h:467:9: note: expanded from macro '__compiletime_assert'
467 | if (!(condition)) \
| ^~~~~~~~~
kernel/tracepoint.c:171:9: note: forward declaration of 'struct bpf_raw_tp_link'
171 | struct bpf_raw_tp_link *link;
| ^fatal error: too many errors emitted, stopping now [-ferror-limit=] 5 warnings and 20 errors generated.
vim +178 kernel/tracepoint.c
167
168 static void debug_print_probes(struct tracepoint_func *funcs)
169 {
170 int i;
171 struct bpf_raw_tp_link *link;
172
173 if (!tracepoint_debug || !funcs)
174 return;
175
176 for (i = 0; funcs[i].func; i++) {
177 link = funcs[i].data;
> 178 int active = this_cpu_read(*(link->link.prog->active));
179 printk("Probe %d : %p / %p: %s/%d / %i\n", i,
180 funcs[i].func,
181 link,
182 link->link.prog->aux->name,
183 active,
184 funcs[i].prio);
185 }
186 }
187
Signature · 2 lines
0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
syzbot
syzbotRe: [syzbot] Re: [email protected]
In reply to syzbotFor archival purposes, forwarding an incoming command email to [email protected], [email protected].
For archival purposes, forwarding an incoming command email to [email protected], [email protected].
***
Subject: Re: [email protected]
Author: [email protected]
#syz test: https://linux.googlesource.com/linux/kernel/git/torvalds/linux 58fa9471b2c0e2ad0efdc2d36b643dc312020cba
The information in this email is confidential and may be legally privileged. It is intended solely for the addressee and access to it by anyone else is unauthorized. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken based on it, is strictly prohibited and may be unlawful.
syzbot
syzbotsyzbot suspects this issue was fixed by commit:
syzbot suspects this issue was fixed by commit:
commit 47979314c0fe245ed54306e2f91b3f819c7c0f9f
Author: Kumar Kartikeya Dwivedi <[email protected]> Date: Sun Mar 16 04:05:37 2025 +0000
bpf: Convert lpm_trie.c to rqspinlock
bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=140598f4580000 start commit: c2933b2befe2 Merge tag 'net-6.14-rc1' of git://git.kernel... git tree: net-next kernel config: https://syzkaller.appspot.com/x/.config?x=d033b14aeef39158 dashboard link: https://syzkaller.appspot.com/bug?extid=9d95beb2a3c260622518 syz repro: https://syzkaller.appspot.com/x/repro.syz?x=108e1724580000 C reproducer: https://syzkaller.appspot.com/x/repro.c?x=177035f8580000
If the result looks correct, please mark the issue as fixed by replying with:
#syz fix: bpf: Convert lpm_trie.c to rqspinlock
For information about bisection process see: https://goo.gl/tpsmEJ#bisection
Quoted 17 lines · syzbot
syzbot suspects this issue was fixed by commit:
commit
47979314c0fe245ed54306e2f91b3f819c7c0f9fAuthor: Kumar Kartikeya Dwivedi <[email protected]> Date: Sun Mar 16 04:05:37 2025 +0000bpf: Convert
lpm_trie.cto rqspinlockbisection log: https://syzkaller.appspot.com/x/bisect.txt?x=140598f4580000 start commit: c2933b2befe2 Merge tag 'net-6.14-rc1' of git://git.kernel... git tree: net-next kernel config: https://syzkaller.appspot.com/x/.config?x=d033b14aeef39158 dashboard link: https://syzkaller.appspot.com/bug?extid=9d95beb2a3c260622518 syz repro: https://syzkaller.appspot.com/x/repro.syz?x=108e1724580000 C reproducer: https://syzkaller.appspot.com/x/repro.c?x=177035f8580000
Quoted 1 line
If the result looks correct, please mark the issue as fixed by replying with:
yes.
#syz fix: bpf: Convert lpm_trie.c to rqspinlock
Kumar Kartikeya Dwivedi
maintainer#syz fix: bpf: Convert lpm_trie.c to rqspinlock
Quoted 23 lines · syzbot
syzbot suspects this issue was fixed by commit:
commit
47979314c0fe245ed54306e2f91b3f819c7c0f9fAuthor: Kumar Kartikeya Dwivedi <[email protected]> Date: Sun Mar 16 04:05:37 2025 +0000bpf: Convert
lpm_trie.cto rqspinlockbisection log: https://syzkaller.appspot.com/x/bisect.txt?x=140598f4580000 start commit: c2933b2befe2 Merge tag 'net-6.14-rc1' of git://git.kernel... git tree: net-next kernel config: https://syzkaller.appspot.com/x/.config?x=d033b14aeef39158 dashboard link: https://syzkaller.appspot.com/bug?extid=9d95beb2a3c260622518 syz repro: https://syzkaller.appspot.com/x/repro.syz?x=108e1724580000 C reproducer: https://syzkaller.appspot.com/x/repro.c?x=177035f8580000If the result looks correct, please mark the issue as fixed by replying with:
#syz fix: bpf: Convert
lpm_trie.cto rqspinlockFor information about bisection process see: https://goo.gl/tpsmEJ#bisection