Re: [RFC PATCH v2 02/20] tracing/filters: Enable filtering a cpumask field by another cpumask

From: Valentin Schneider
Date: Thu Jul 27 2023 - 05:48:51 EST


On 26/07/23 12:41, Josh Poimboeuf wrote:
> On Thu, Jul 20, 2023 at 05:30:38PM +0100, Valentin Schneider wrote:
>> int filter_assign_type(const char *type)
>> {
>> - if (strstr(type, "__data_loc") && strstr(type, "char"))
>> - return FILTER_DYN_STRING;
>> + if (strstr(type, "__data_loc")) {
>> + if (strstr(type, "char"))
>> + return FILTER_DYN_STRING;
>> + if (strstr(type, "cpumask_t"))
>> + return FILTER_CPUMASK;
>> + }
>
> The closing bracket has the wrong indentation.
>
>> + /* Copy the cpulist between { and } */
>> + tmp = kmalloc((i - maskstart) + 1, GFP_KERNEL);
>> + strscpy(tmp, str + maskstart, (i - maskstart) + 1);
>
> Need to check kmalloc() failure? And also free tmp?
>

Heh, indeed, shoddy that :-)

Thanks!

>> +
>> + pred->mask = kzalloc(cpumask_size(), GFP_KERNEL);
>> + if (!pred->mask)
>> + goto err_mem;
>> +
>> + /* Now parse it */
>> + if (cpulist_parse(tmp, pred->mask)) {
>> + parse_error(pe, FILT_ERR_INVALID_CPULIST, pos + i);
>> + goto err_free;
>> + }
>> +
>> + /* Move along */
>> + i++;
>> + if (field->filter_type == FILTER_CPUMASK)
>> + pred->fn_num = FILTER_PRED_FN_CPUMASK;
>> +
>
> --
> Josh