]> www.infradead.org Git - users/hch/misc.git/commitdiff
lib/sys_info: handle sys_info_mask==0 case
authorFeng Tang <feng.tang@linux.alibaba.com>
Mon, 25 Aug 2025 02:56:58 +0000 (10:56 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Sun, 14 Sep 2025 00:32:50 +0000 (17:32 -0700)
Generalization of panic_print's dump function [1] has been merged, and
this patchset is to address some remaining issues, like adding note of the
obsoletion of 'panic_print' cmdline parameter, refining the kernel
document for panic_print, and hardening some string management.

This patch (of 4):

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()'.

Link: https://lkml.kernel.org/r/20250825025701.81921-1-feng.tang@linux.alibaba.com
Link: https://lkml.kernel.org/r/20250825025701.81921-2-feng.tang@linux.alibaba.com
Link: https://lkml.kernel.org/r/20250703021004.42328-1-feng.tang@linux.alibaba.com
Signed-off-by: Feng Tang <feng.tang@linux.alibaba.com>
Suggested-by: Petr Mladek <pmladek@suse.com>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Cc: Askar Safin <safinaskar@zohomail.com>
Cc: John Ogness <john.ogness@linutronix.de>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Lance Yang <lance.yang@linux.dev>
Cc: "Paul E . McKenney" <paulmck@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
lib/sys_info.c

index 5bf503fd7ec14b31ffba0738a0e907140a5c0eed..496f9151c9b68c314589301a0beffedce415a0be 100644 (file)
@@ -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,7 @@ int sysctl_sys_info_handler(const struct ctl_table *ro_table, int write,
                char *delim = "";
                int i, len = 0;
 
+               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,