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