]> git.ipfire.org Git - thirdparty/linux.git/blobdiff - kernel/printk/printk.c
Merge tag 'printk-for-6.10' of git://git.kernel.org/pub/scm/linux/kernel/git/printk...
[thirdparty/linux.git] / kernel / printk / printk.c
index adf99c05adcafc494a003294e0de525005271df6..3160d287d4cfad40aeb11528c98bacb4b0ff60d3 100644 (file)
@@ -178,9 +178,9 @@ static int __init control_devkmsg(char *str)
         * Set sysctl string accordingly:
         */
        if (devkmsg_log == DEVKMSG_LOG_MASK_ON)
-               strcpy(devkmsg_log_str, "on");
+               strscpy(devkmsg_log_str, "on");
        else if (devkmsg_log == DEVKMSG_LOG_MASK_OFF)
-               strcpy(devkmsg_log_str, "off");
+               strscpy(devkmsg_log_str, "off");
        /* else "ratelimit" which is set by default. */
 
        /*
@@ -209,7 +209,7 @@ int devkmsg_sysctl_set_loglvl(struct ctl_table *table, int write,
                        return -EINVAL;
 
                old = devkmsg_log;
-               strncpy(old_str, devkmsg_log_str, DEVKMSG_STR_MAX_SIZE);
+               strscpy(old_str, devkmsg_log_str);
        }
 
        err = proc_dostring(table, write, buffer, lenp, ppos);
@@ -227,7 +227,7 @@ int devkmsg_sysctl_set_loglvl(struct ctl_table *table, int write,
 
                        /* ... and restore old setting. */
                        devkmsg_log = old;
-                       strncpy(devkmsg_log_str, old_str, DEVKMSG_STR_MAX_SIZE);
+                       strscpy(devkmsg_log_str, old_str);
 
                        return -EINVAL;
                }
@@ -2506,22 +2506,22 @@ static int __init console_setup(char *str)
        /*
         * Decode str into name, index, options.
         */
-       if (str[0] >= '0' && str[0] <= '9') {
-               strcpy(buf, "ttyS");
-               strncpy(buf + 4, str, sizeof(buf) - 5);
-       } else {
-               strncpy(buf, str, sizeof(buf) - 1);
-       }
-       buf[sizeof(buf) - 1] = 0;
+       if (isdigit(str[0]))
+               scnprintf(buf, sizeof(buf), "ttyS%s", str);
+       else
+               strscpy(buf, str);
+
        options = strchr(str, ',');
        if (options)
                *(options++) = 0;
+
 #ifdef __sparc__
        if (!strcmp(str, "ttya"))
-               strcpy(buf, "ttyS0");
+               strscpy(buf, "ttyS0");
        if (!strcmp(str, "ttyb"))
-               strcpy(buf, "ttyS1");
+               strscpy(buf, "ttyS1");
 #endif
+
        for (s = buf; *s; s++)
                if (isdigit(*s) || *s == ',')
                        break;