Hi Kangjie, On Mon, Mar 11, 2019 at 8:50 AM Kangjie Lu <kjlu@xxxxxxx> wrote: > of_get_phy_mode may fail and return a negative error code; > the fix checks the return value of of_get_phy_mode and > returns NULL of it fails. > > Signed-off-by: Kangjie Lu <kjlu@xxxxxxx> > --- a/drivers/net/ethernet/renesas/sh_eth.c > +++ b/drivers/net/ethernet/renesas/sh_eth.c > @@ -3187,6 +3187,8 @@ static struct sh_eth_plat_data *sh_eth_parse_dt(struct device *dev) > return NULL; > > pdata->phy_interface = of_get_phy_mode(np); > + if (pdata->phy_interface < 0) > + return NULL; sh_eth_plat_data.phy_interface has type phy_interface_t. This is an enum containing only positive values, hence it is unsigned. So the condition can never be true. of_get_phy_mode() returns int, as it has to indicate errors by returning negative error codes. Hence please use an intermediate of type int: int ret; ... ret = of_get_phy_mode(np); if (ret < 0) return NULL; pdata->phy_interface = ret; > > mac_addr = of_get_mac_address(np); > if (mac_addr) Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds