drivers/net/irda/mcs7780.c: fix error return code
The function mcs_probe() return 0 for success and negative value for most of its internal tests failures. There is one exception that is error case going to error2:. For this error case, the function abort its success execution path, but returns non negative value, making it difficult for a caller function to notice the error. This patch fixes the error case that do not return negative value. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> ( if@p1 (\(ret < 0\|ret != 0\)) { ... return ret; } | ret@p1 = 0 ) ... when != ret = e1 when != &ret *if(...) { ... when != ret = e2 when forall return ret; } // </smpl> Signed-off-by: Peter Senna Tschudin <peter.senna@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
87286477c4
commit
6734011f3c
|
@ -920,8 +920,10 @@ static int mcs_probe(struct usb_interface *intf,
|
||||||
|
|
||||||
ndev->netdev_ops = &mcs_netdev_ops;
|
ndev->netdev_ops = &mcs_netdev_ops;
|
||||||
|
|
||||||
if (!intf->cur_altsetting)
|
if (!intf->cur_altsetting) {
|
||||||
|
ret = -ENOMEM;
|
||||||
goto error2;
|
goto error2;
|
||||||
|
}
|
||||||
|
|
||||||
ret = mcs_find_endpoints(mcs, intf->cur_altsetting->endpoint,
|
ret = mcs_find_endpoints(mcs, intf->cur_altsetting->endpoint,
|
||||||
intf->cur_altsetting->desc.bNumEndpoints);
|
intf->cur_altsetting->desc.bNumEndpoints);
|
||||||
|
|
Loading…
Reference in New Issue