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

Reply via email to