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

From: Josh Poimboeuf
Date: Wed Jul 26 2023 - 15:42:08 EST


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?

> +
> + 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