lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 24 Dec 2015 08:06:26 -0800
From:	Joe Perches <joe@...ches.com>
To:	"Gujulan Elango, Hari Prasath (H.)" <hgujulan@...teon.com>,
	"gregkh@...uxfoundation.org" <gregkh@...uxfoundation.org>,
	"christian.gromm@...rochip.com" <christian.gromm@...rochip.com>,
	"andrey.shvetsov@....de" <andrey.shvetsov@....de>,
	"adrianremonda@...il.com" <adrianremonda@...il.com>,
	"sudipm.mukherjee@...il.com" <sudipm.mukherjee@...il.com>
Cc:	"devel@...verdev.osuosl.org" <devel@...verdev.osuosl.org>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] staging: most: replace multiple if..else with table
 lookup

On Thu, 2015-12-24 at 10:49 +0000, Gujulan Elango, Hari Prasath (H.) wrote:
> From: Hari Prasath Gujulan Elango <hgujulan@...teon.com>
> 
> Replace multiple if..else if..statements with simple table lookup in two
> functions.
> 
> Signed-off-by: Hari Prasath Gujulan Elango <hgujulan@...teon.com>
> ---
>  drivers/staging/most/mostcore/core.c | 39 ++++++++++++++++++++----------------
>  1 file changed, 22 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/staging/most/mostcore/core.c b/drivers/staging/most/mostcore/core.c
> index ed1ed25..7b4636b 100644
> --- a/drivers/staging/most/mostcore/core.c
> +++ b/drivers/staging/most/mostcore/core.c
> @@ -82,6 +82,14 @@ struct most_inst_obj {
>  	struct list_head list;
>  };
>  
> +static const struct {
> +	int most_ch_data_type;
> +	char *name;
> +} ch_data_type[] = { { MOST_CH_CONTROL, "control\n" },
> +	{ MOST_CH_ASYNC, "async\n" },
> +	{ MOST_CH_SYNC, "sync\n" },
> +	{ MOST_CH_ISOC_AVP, "isoc_avp\n"} };
> +
>  #define to_inst_obj(d) container_of(d, struct most_inst_obj, kobj)
>  
>  /**
> @@ -414,14 +422,12 @@ static ssize_t show_set_datatype(struct most_c_obj *c,
>  				 struct most_c_attr *attr,
>  				 char *buf)
>  {
> -	if (c->cfg.data_type & MOST_CH_CONTROL)
> -		return snprintf(buf, PAGE_SIZE, "control\n");
> -	else if (c->cfg.data_type & MOST_CH_ASYNC)
> -		return snprintf(buf, PAGE_SIZE, "async\n");
> -	else if (c->cfg.data_type & MOST_CH_SYNC)
> -		return snprintf(buf, PAGE_SIZE, "sync\n");
> -	else if (c->cfg.data_type & MOST_CH_ISOC_AVP)
> -		return snprintf(buf, PAGE_SIZE, "isoc_avp\n");
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(ch_data_type); i++) {
> +		if (c->cfg.data_type & ch_data_type[i].most_ch_data_type)
> +			return snprintf(buf, PAGE_SIZE, ch_data_type[i].name);
> +	}
>  	return snprintf(buf, PAGE_SIZE, "unconfigured\n");
>  }
>  
> @@ -430,15 +436,14 @@ static ssize_t store_set_datatype(struct most_c_obj *c,
>  				  const char *buf,
>  				  size_t count)
>  {
> -	if (!strcmp(buf, "control\n")) {
> -		c->cfg.data_type = MOST_CH_CONTROL;
> -	} else if (!strcmp(buf, "async\n")) {
> -		c->cfg.data_type = MOST_CH_ASYNC;
> -	} else if (!strcmp(buf, "sync\n")) {
> -		c->cfg.data_type = MOST_CH_SYNC;
> -	} else if (!strcmp(buf, "isoc_avp\n")) {
> -		c->cfg.data_type = MOST_CH_ISOC_AVP;
> -	} else {
> +	int i;
> +
> +	for (i = 0; i < ARRAY_SIZE(ch_data_type); i++) {
> +		if (!strcmp(buf, ch_data_type[i].name))
> +			c->cfg.data_type = ch_data_type[i].most_ch_data_type;

Missing braces and break;

> +	}
> +
> +	if (i == ARRAY_SIZE(ch_data_type)) {
>  		pr_info("WARN: invalid attribute settings\n");
>  		return -EINVAL;
>  	}

This seems like a lot of code for a simple test.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ