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

From: Andrew Lunn
Date: Fri Apr 15 2016 - 19:56:07 EST


> + 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