> On 4 May 2026, at 7:19 AM, Namhyung Kim <[email protected]> wrote:
>
> On Sat, May 02, 2026 at 07:42:57PM +0530, Athira Rajeev wrote:
>> The format_alias() function in util/pmu.c has a check to
>> detect whether the event has parameterized field ( =? ).
>> The string alias->terms contains the event and if the event
>> has user configurable parameter, there will be presence of
>> sub string "=?" in the alias->terms.
>>
>> Snippet of code:
>>
>> /* Paramemterized events have the parameters shown. */
>> if (strstr(alias->terms, "=?")) {
>> /* No parameters. */
>> snprintf(buf, len, "%.*s/%s/", (int)pmu_name_len, pmu->name,
>> alias->name);
>>
>> if "strstr" contains the substring, it returns a pointer
>> and hence enters the above check which is not the expected
>> check. And hence "perf list" doesn't have the parameterized
>> fields in the result.
>>
>> Fix this check to use:
>>
>> if (!strstr(alias->terms, "=?")) {
>>
>> With this change, perf list shows the events correctly with
>> the strings showing parameters.
>
> Any real examples?
Sure, I will update the commit message
Thanks
Athira
>
> Thanks,
> Namhyung
>
>>
>> Signed-off-by: Athira Rajeev <[email protected]>
>> ---
>> Changelog:
>> v2 -> v3:
>> Split the strstr correction in a single patch
>>
>> tools/perf/util/pmu.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
>> index 23337d2fa281..0b8d58543f17 100644
>> --- a/tools/perf/util/pmu.c
>> +++ b/tools/perf/util/pmu.c
>> @@ -2117,7 +2117,7 @@ static char *format_alias(char *buf, int len, const
>> struct perf_pmu *pmu,
>> skip_duplicate_pmus);
>>
>> /* Paramemterized events have the parameters shown. */
>> - if (strstr(alias->terms, "=?")) {
>> + if (!strstr(alias->terms, "=?")) {
>> /* No parameters. */
>> snprintf(buf, len, "%.*s/%s/", (int)pmu_name_len, pmu->name, alias->name);
>> return buf;
>> --
>> 2.47.3