Skip to content

Commit

Permalink
net:dsa: check for EPROBE_DEFER from dsa_dst_parse()
Browse files Browse the repository at this point in the history
Since there can be multiple dsa switches stacked together but
not all of devicetree nodes available at the time of calling
dsa_dst_parse(), EPROBE_DEFER can be returned by it. When this
happens, only the last dsa switch has to be deleted by
dsa_dst_del_ds(), but not the whole list, because next time linux
cames back to this function it will try to add only the last dsa
switch which returned EPROBE_DEFER.

Signed-off-by: Volodymyr Bendiuga <volodymyr.bendiuga@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Volodymyr Bendiuga authored and David S. Miller committed Jan 5, 2017
1 parent 56b46b4 commit 5e6eb45
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion net/dsa/dsa2.c
Original file line number Diff line number Diff line change
Expand Up @@ -647,8 +647,14 @@ static int _dsa_register_switch(struct dsa_switch *ds, struct device_node *np)
}

err = dsa_dst_parse(dst);
if (err)
if (err) {
if (err == -EPROBE_DEFER) {
dsa_dst_del_ds(dst, ds, ds->index);
return err;
}

goto out_del_dst;
}

err = dsa_dst_apply(dst);
if (err) {
Expand Down

0 comments on commit 5e6eb45

Please sign in to comment.