[LTP] [PATCH v2] cgroup: Handle trailing new line in cgroup.controllers

Richard Palethorpe rpalethorpe@suse.de
Fri Oct 27 10:21:11 CEST 2023


Hello,

Petr Vorel <pvorel@suse.cz> writes:

> Hi Richie,
>
> Reviewed-by: Petr Vorel <pvorel@suse.cz>
>
>> V2:
>> * Add underscore
>> * Add length check
>> * Expand commit message
>> * Use shorter syntax
> +1
>
>>  lib/tst_cgroup.c | 13 ++++++++++++-
>>  1 file changed, 12 insertions(+), 1 deletion(-)
>
>> diff --git a/lib/tst_cgroup.c b/lib/tst_cgroup.c
>> index 5240aadaa..c5cb20505 100644
>> --- a/lib/tst_cgroup.c
>> +++ b/lib/tst_cgroup.c
>> @@ -433,9 +433,20 @@ __attribute__ ((nonnull, warn_unused_result))
>>  static struct cgroup_ctrl *cgroup_find_ctrl(const char *const ctrl_name)
>>  {
>>  	struct cgroup_ctrl *ctrl;
>> +	int l = 0;
>> +	char c = ctrl_name[l];
>> +
>> +	while (c == '_' || (c >= 'a' && c <= 'z'))
>> +		c = ctrl_name[++l];
>> +
>> +	if (l > 32)
> +1 for this check.
> I would slightly prefer to add MAX_CGROUP_TYPE_NAMELEN definition into our
> include/tst_cgroup.h, but it can stay as is.
>
> BTW include/linux/cgroup-defs.h contains also MAX_CGROUP_ROOT_NAMELEN, there are
> also other checks in C files (CGROUP_FILE_NAME_MAX) in case it makes sense to
> have some checks for these (I have no idea).

I'm not sure about this. On the one hand it may detect a bug in the
library or kernel. On the other it's not exposed to userland or defined
anywhere.

For me the main thing is to avoid janitorial work like creating and
merging patches just to increase some internal kernel value that was
increased or is ignored in some corner case.

I'll post another patch if there is some obvious way to check the root
name length that would help the library.

Thanks for the review, I'll merge this now.

>
> Kind regards,
> Petr
>
>> +		tst_res(TWARN, "Subsys name len greater than max known value of MAX_CGROUP_TYPE_NAMELEN: %d > 32", l);
>
>> +
>> +	if (!(c == '\n' || c == '\0'))
>> +		tst_brk(TBROK, "Unexpected char in %s: %c", ctrl_name, c);
>
>>  	for_each_ctrl(ctrl) {
>> -		if (!strcmp(ctrl_name, ctrl->ctrl_name))
>> +		if (!strncmp(ctrl_name, ctrl->ctrl_name, l))
>>  			return ctrl;
>>  	}


-- 
Thank you,
Richard.


More information about the ltp mailing list