On Sun, 25 Oct 2026 01:26:01 +0900 "Masami Hiramatsu (Google)" <[email protected]> wrote:
> From: Masami Hiramatsu (Google) <[email protected]> > > In filter_pred_##size##_cpumask(), if the event's scalar CPU value is > out of range (cpu >= nr_cpu_ids), it unconditionally returns 0. > > However, if the predicate operation is OP_NE (e.g., field != CPUS{0,1}), > an out-of-range CPU cannot match any valid CPU in the user-provided > cpumask and the condition is satisfied. Returning 0 produces a false > negative. > > Return "pred->op == OP_NE" instead of 0 when cpu >= nr_cpu_ids. > > Fixes: 3cbec9d7b93d ("tracing/filters: Enable filtering a scalar field by a > cpumask") > Cc: [email protected] BTW, a lot of these are just "stupid input produces stupid results" and I personally feel it doesn't deserve a stable tag. I don't even think it deserves the "fixes" tag. Now if the stupid input were to produce a crash or warning, then that's different. -- Steve > Signed-off-by: Masami Hiramatsu (Google) <[email protected]> > --- > kernel/trace/trace_events_filter.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/kernel/trace/trace_events_filter.c > b/kernel/trace/trace_events_filter.c > index 69da95f42541..d9aeeec4ed91 100644 > --- a/kernel/trace/trace_events_filter.c > +++ b/kernel/trace/trace_events_filter.c > @@ -762,7 +762,7 @@ static int filter_pred_##size##_cpumask(struct > filter_pred *pred, void *event) \ > unsigned int cpu = *addr; > \ > > \ > if (cpu >= nr_cpu_ids) > \ > - return 0; > \ > + return pred->op == OP_NE; > \ > > \ > return do_filter_scalar_cpumask(pred->op, cpu, pred->mask); > \ > }
