> diff --git a/kernel/trace/trace_dynevent.c b/kernel/trace/trace_dynevent.c
> index c4dfbc293bae..9e076106bee7 100644
> --- a/kernel/trace/trace_dynevent.c
> +++ b/kernel/trace/trace_dynevent.c
[ ... ]
> @@ -100,7 +100,7 @@ int dyn_event_release(const char *raw_command, struct
> dyn_event_operations *type
> return -EINVAL;
>
> mutex_lock(&event_mutex);
> - for_each_dyn_event_safe(pos, n) {
> + for_each_dyn_event_safe(pos) {
> if (type && type != pos->ops)
> continue;
> if (!pos->ops->match(system, event,
Does this leave the variable n unused? Looking at the function
declaration around line 74, it still has:
struct dyn_event *pos, *n;
but after this change n is no longer passed to for_each_dyn_event_safe().
The macro now hides the temporary cursor internally, so n appears to be
dead code. This would trigger -Wunused-variable warnings and break builds
with CONFIG_WERROR=y.
For comparison, the sibling change at line 219 (dyn_events_release_all)
correctly removed the *tmp variable from its declaration.
> diff --git a/kernel/trace/trace_dynevent.h b/kernel/trace/trace_dynevent.h
> index beee3f8d7544..a4dc0812284f 100644
> --- a/kernel/trace/trace_dynevent.h
> +++ b/kernel/trace/trace_dynevent.h
> @@ -115,10 +115,9 @@ int dyn_event_create(const char *raw_command, struct
> dyn_event_operations *type)
> /*
> * for_each_dyn_event - iterate over the dyn_event list safely
> * @pos: the struct dyn_event * to use as a loop cursor
> - * @n: the struct dyn_event * to use as temporary storage
> */
> -#define for_each_dyn_event_safe(pos, n) \
> - list_for_each_entry_safe(pos, n, &dyn_event_list, list)
> +#define for_each_dyn_event_safe(pos) \
> + list_for_each_entry_mutable(pos, &dyn_event_list, list)
---
AI reviewed your patch. Please fix the bug or email reply why it's not a bug.
See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md
CI run summary: https://github.com/kernel-patches/bpf/actions/runs/27930295027