Re: [PATCH 1/3] lib/sys_info: handle sys_info_mask==0 case

From: Petr Mladek
Date: Tue Aug 19 2025 - 04:34:26 EST


On Fri 2025-08-15 15:14:26, Feng Tang wrote:
> It is a normal case that bitmask parameter is 0, so pre-initialize the
> names[] to null string to cover this case.
>
> Also remove the superfluous "+1" in names[sizeof(sys_info_avail) + 1],
> which is needed for 'strlen()', but not for 'sizeof()'.
>
> --- a/lib/sys_info.c
> +++ b/lib/sys_info.c
> @@ -55,7 +55,7 @@ int sysctl_sys_info_handler(const struct ctl_table *ro_table, int write,
> void *buffer, size_t *lenp,
> loff_t *ppos)
> {
> - char names[sizeof(sys_info_avail) + 1];
> + char names[sizeof(sys_info_avail)];
> struct ctl_table table;
> unsigned long *si_bits_global;
>
> @@ -81,6 +81,9 @@ int sysctl_sys_info_handler(const struct ctl_table *ro_table, int write,
> char *delim = "";
> int i, len = 0;
>
> + /* *si_bits_glabl could be 0 */

s/si_bits_glabl/si_bits_global/

But I would personally remove the comment completely. IMHO, the
purpose is quite obvious. But I do not resist on it.

> + names[0] = '\0';
> +
> for (i = 0; i < ARRAY_SIZE(si_names); i++) {
> if (*si_bits_global & si_names[i].bit) {
> len += scnprintf(names + len, sizeof(names) - len,

Otherwise, it looks good to me:

Reviewed-by: Petr Mladek <pmladek@xxxxxxxx>

Best Regards,
Petr