On 29/07/23 15:09, Steven Rostedt wrote: > On Wed, 26 Jul 2023 12:41:48 -0700 > Josh Poimboeuf <jpoimboe@xxxxxxxxxx> 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? > > I came to state the same thing. > > Also, when you do an empty for loop: > > for (; str[i] && str[i] != '}'; i++); > > Always put the semicolon on the next line, otherwise it is really easy > to think that the next line is part of the for loop. That is, instead > of the above, do: > > for (; str[i] && str[i] != '}'; i++) > ; > Interestingly I don't think I've ever encountered that variant, usually having an empty line (which this lacks) and the indentation level is enough to identify these - regardless, I'll change it. > > -- Steve > > >> >> > + >> > + 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; >> > + >>