On Friday, April 2, 2021, Corey Minyard <miny...@acm.org> wrote: > On Tue, Mar 30, 2021 at 09:16:44PM +0300, Andy Shevchenko wrote: > > Instead of twice repeat the constant literals, introduce > > panic_event_str array. It allows to simplify the code with > > help of match_string() API. > > > > Signed-off-by: Andy Shevchenko <andriy.shevche...@linux.intel.com> > > --- > > drivers/char/ipmi/ipmi_msghandler.c | 49 ++++++++++------------------- > > 1 file changed, 17 insertions(+), 32 deletions(-) > > > > diff --git a/drivers/char/ipmi/ipmi_msghandler.c > b/drivers/char/ipmi/ipmi_msghandler.c > > index f19f0f967e28..c7d37366d7bb 100644 > > --- a/drivers/char/ipmi/ipmi_msghandler.c > > +++ b/drivers/char/ipmi/ipmi_msghandler.c > > @@ -52,8 +52,12 @@ static bool drvregistered; > > enum ipmi_panic_event_op { > > IPMI_SEND_PANIC_EVENT_NONE, > > IPMI_SEND_PANIC_EVENT, > > - IPMI_SEND_PANIC_EVENT_STRING > > + IPMI_SEND_PANIC_EVENT_STRING, > > + IPMI_SEND_PANIC_EVENT_MAX > > }; > > This is a nice change. Can you add a comment here so that readers know > that the above enum and the following array are tied numerically?
Sure. I also add a prefix. > > -corey > > > + > > +static const char *const panic_event_str[] = { "none", "event", > "string", NULL }; > > + > > #ifdef CONFIG_IPMI_PANIC_STRING > > #define IPMI_PANIC_DEFAULT IPMI_SEND_PANIC_EVENT_STRING > > #elif defined(CONFIG_IPMI_PANIC_EVENT) > > @@ -68,46 +72,27 @@ static int panic_op_write_handler(const char *val, > > const struct kernel_param *kp) > > { > > char valcp[16]; > > - char *s; > > - > > - strncpy(valcp, val, 15); > > - valcp[15] = '\0'; > > + int e; > > > > - s = strstrip(valcp); > > - > > - if (strcmp(s, "none") == 0) > > - ipmi_send_panic_event = IPMI_SEND_PANIC_EVENT_NONE; > > - else if (strcmp(s, "event") == 0) > > - ipmi_send_panic_event = IPMI_SEND_PANIC_EVENT; > > - else if (strcmp(s, "string") == 0) > > - ipmi_send_panic_event = IPMI_SEND_PANIC_EVENT_STRING; > > - else > > - return -EINVAL; > > + strscpy(valcp, val, sizeof(valcp)); > > + e = match_string(panic_event_str, -1, strstrip(valcp)); > > + if (e < 0) > > + return e; > > > > + ipmi_send_panic_event = e; > > return 0; > > } > > > > static int panic_op_read_handler(char *buffer, const struct > kernel_param *kp) > > { > > - switch (ipmi_send_panic_event) { > > - case IPMI_SEND_PANIC_EVENT_NONE: > > - strcpy(buffer, "none\n"); > > - break; > > - > > - case IPMI_SEND_PANIC_EVENT: > > - strcpy(buffer, "event\n"); > > - break; > > - > > - case IPMI_SEND_PANIC_EVENT_STRING: > > - strcpy(buffer, "string\n"); > > - break; > > + const char *event_str; > > > > - default: > > - strcpy(buffer, "???\n"); > > - break; > > - } > > + if (ipmi_send_panic_event >= IPMI_SEND_PANIC_EVENT_MAX) > > + event_str = "???"; > > + else > > + event_str = panic_event_str[ipmi_send_panic_event]; > > > > - return strlen(buffer); > > + return sprintf(buffer, "%s\n", event_str); > > } > > > > static const struct kernel_param_ops panic_op_ops = { > > -- > > 2.30.2 > > > -- With Best Regards, Andy Shevchenko
_______________________________________________ Openipmi-developer mailing list Openipmi-developer@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openipmi-developer