Subject: Re: [PATCH net-next v2 3/7] net: dsa: mv88e6xxx: add switch info

From: Andrew Lunn <[email-masked]>
Date: Sat, 16 Apr 2016 01:55:58 +0200

> +	for (i = 0, info = &table[i]; i < num; info = &table[++i])
> +		if (info->prod_num == (id & 0xfff0) >> 4)
> +			goto found;
>  
>  	return NULL;
> -}
>  
> -char *mv88e6xxx_drv_probe(struct device *dsa_dev, struct device *host_dev,
> -			  int sw_addr, void **priv,
> -			  const struct mv88e6xxx_switch_id *table,
> -			  unsigned int num)
> -{
> -	struct mv88e6xxx_priv_state *ps;
> -	struct mii_bus *bus = dsa_host_dev_to_mii_bus(host_dev);
> -	char *name;
> -
> -	if (!bus)
> +found:
> +	ps = devm_kzalloc(dsa_dev, sizeof(*ps), GFP_KERNEL);
> +	if (!ps)

This looks like a goto to jump around a return NULL. Ugly.  I would
keep this lookup in a separate function. You can then avoid ugly stuff
like this.

CodingStyle says:

                Chapter 6: Functions

Functions should be short and sweet, and do just one thing.  They should
fit on one or two screenfuls of text (the ISO/ANSI screen size is 80x24,
as we all know), and do one thing and do that well.

   Andrew