On Fri, 2019-08-02 at 09:47 +0800, Chuhong Yuan wrote: > strncmp(str, const, len) is error-prone because len > is easy to have typo. > The example is the hard-coded len has counting error > or sizeof(const) forgets - 1. > So we prefer using newly introduced str_has_prefix > to substitute such strncmp. [] > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c [] > @@ -118,18 +118,20 @@ static unsigned int __read_mostly devkmsg_log = > DEVKMSG_LOG_MASK_DEFAULT; > > static int __control_devkmsg(char *str) > { > + size_t len; > + > if (!str) > return -EINVAL; > > - if (!strncmp(str, "on", 2)) { > + if ((len = str_has_prefix(str, "on"))) { > devkmsg_log = DEVKMSG_LOG_MASK_ON; > - return 2; > - } else if (!strncmp(str, "off", 3)) { > + return len; > + } else if ((len = str_has_prefix(str, "off"))) { > devkmsg_log = DEVKMSG_LOG_MASK_OFF; > - return 3; > - } else if (!strncmp(str, "ratelimit", 9)) { > + return len; > + } else if ((len = str_has_prefix(str, "ratelimit"))) { > devkmsg_log = DEVKMSG_LOG_MASK_DEFAULT; > - return 9; > + return len; > } > return -EINVAL; > }
All of the else uses above could also be removed.