Re: [PATCH v10 07/29] perf lock: Only pass sample to handlers

Namhyung Kim <[email protected]>
Newsgroups dev.linux.lists.sashiko,org.kernel.vger.linux-perf-users
Message-ID <[email protected]>
On Sun, Apr 12, 2026 at 02:25:37AM +0000, [email protected] wrote:
> Sashiko AI review found 1 potential issue(s):
> - [Medium] Out-of-memory errors from get_callstack() are silently swallowed.
> --
> 
> commit 4d8eb4c521b8cbbd581b94a51ae57655ebd7ab69
> Author: Ian Rogers <[email protected]>
> perf lock: Only pass sample to handlers
> 
> This commit removes the unused evsel parameter from lock event handlers and
> adds a NULL check for sample->callchain in get_callstack().
> 
> > diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c
> > index e2b585e528aca..fcc33089b9455 100644
> > --- a/tools/perf/builtin-lock.c
> > +++ b/tools/perf/builtin-lock.c
> [ ... ]
> > @@ -948,9 +938,16 @@ static u64 *get_callstack(struct perf_sample *sample, int max_stack)
> >  	u64 i;
> >  	int c;
> >  
> > +	if (!sample->callchain) {
> > +		pr_debug("Sample unexpectedly missing callchain\n");
> > +		return NULL;
> > +	}
> > +
> >  	callstack = calloc(max_stack, sizeof(*callstack));
> > -	if (callstack == NULL)
> > +	if (callstack == NULL) {
> > +		pr_debug("Failed to allocate callstack\n");
> >  		return NULL;
> > +	}
> >  
> >  	for (i = 0, c = 0; i < sample->callchain->nr && c < max_stack; i++) {
> >  		u64 ip = sample->callchain->ips[i];
> [ ... ]
> > @@ -1070,7 +1066,7 @@ static int report_lock_contention_begin_event(struct evsel *evsel __maybe_unused
> >  	if (needs_callstack()) {
> >  		u64 *callstack = get_callstack(sample, max_stack_depth);
> >  		if (callstack == NULL)
> > -			return -ENOMEM;
> > +			return 0;
> 
> Does this inadvertently swallow the memory allocation failure from
> get_callstack()?
> 
> Since get_callstack() returns NULL both when the callchain is missing and
> when calloc() fails, changing this return from -ENOMEM to 0 means the tool
> will now silently drop events when memory is exhausted instead of propagating
> the error.

I've removed this part for now.

Thanks,
Namhyung
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.