On 10/24/19 3:32 AM, Colin King wrote: > From: Colin Ian King <colin.king@xxxxxxxxxxxxx> > > Currently ds->dev is dereferenced on the assignments of pdata and > np before ds->dev is null checked, hence there is a potential null > pointer dereference on ds->dev. Fix this by assigning pdata and > np after the ds->dev null pointer sanity check. > > Addresses-Coverity: ("Dereference before null check") > Fixes: 7e99e3470172 ("net: dsa: remove dsa_switch_alloc helper") > Signed-off-by: Colin Ian King <colin.king@xxxxxxxxxxxxx> Reviewed-by: Florian Fainelli <f.fainelli@xxxxxxxxx> and while we are at it: Reported-by: kbuild test robot <lkp@xxxxxxxxx> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> [linux-next:master 5983/6376] net/dsa/dsa2.c:849 dsa_switch_probe() warn: variable dereferenced before check 'ds->dev' (see line 845) > --- > net/dsa/dsa2.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c > index 1e3ac9b56c89..214dd703b0cc 100644 > --- a/net/dsa/dsa2.c > +++ b/net/dsa/dsa2.c > @@ -842,13 +842,16 @@ static int dsa_switch_add(struct dsa_switch *ds) > > static int dsa_switch_probe(struct dsa_switch *ds) > { > - struct dsa_chip_data *pdata = ds->dev->platform_data; > - struct device_node *np = ds->dev->of_node; > + struct dsa_chip_data *pdata; > + struct device_node *np; > int err; > > if (!ds->dev) > return -ENODEV; > > + pdata = ds->dev->platform_data; > + np = ds->dev->of_node; > + > if (!ds->num_ports) > return -EINVAL; > > -- Florian