drivers/usb/class/usblp.c: adjust error handling code
In this code, it is possible to tell statically whether usblp will be NULL in the error handling code. Oliver Neukum suggested to make a goto to the final return rather than return directly. The semantic match that finds this problem is as follows: (http://www.emn.fr/x-info/coccinelle/) // <smpl> @@ identifier f,err,l,l1; type T; expression x,E; statement S; @@ x = NULL ... when != goto l1; * x = f(...) ... when != x err = E; goto l; ... * if (x != NULL) S return err; // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Cc: Pete Zaitcev <zaitcev@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
5b775f672c
commit
49b707b90c
@@ -1076,15 +1076,16 @@ static int usblp_probe(struct usb_interface *intf,
|
|||||||
const struct usb_device_id *id)
|
const struct usb_device_id *id)
|
||||||
{
|
{
|
||||||
struct usb_device *dev = interface_to_usbdev (intf);
|
struct usb_device *dev = interface_to_usbdev (intf);
|
||||||
struct usblp *usblp = NULL;
|
struct usblp *usblp;
|
||||||
int protocol;
|
int protocol;
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
/* Malloc and start initializing usblp structure so we can use it
|
/* Malloc and start initializing usblp structure so we can use it
|
||||||
* directly. */
|
* directly. */
|
||||||
if (!(usblp = kzalloc(sizeof(struct usblp), GFP_KERNEL))) {
|
usblp = kzalloc(sizeof(struct usblp), GFP_KERNEL);
|
||||||
|
if (!usblp) {
|
||||||
retval = -ENOMEM;
|
retval = -ENOMEM;
|
||||||
goto abort;
|
goto abort_ret;
|
||||||
}
|
}
|
||||||
usblp->dev = dev;
|
usblp->dev = dev;
|
||||||
mutex_init(&usblp->wmut);
|
mutex_init(&usblp->wmut);
|
||||||
@@ -1179,12 +1180,11 @@ abort_intfdata:
|
|||||||
usb_set_intfdata (intf, NULL);
|
usb_set_intfdata (intf, NULL);
|
||||||
device_remove_file(&intf->dev, &dev_attr_ieee1284_id);
|
device_remove_file(&intf->dev, &dev_attr_ieee1284_id);
|
||||||
abort:
|
abort:
|
||||||
if (usblp) {
|
|
||||||
kfree(usblp->readbuf);
|
kfree(usblp->readbuf);
|
||||||
kfree(usblp->statusbuf);
|
kfree(usblp->statusbuf);
|
||||||
kfree(usblp->device_id_string);
|
kfree(usblp->device_id_string);
|
||||||
kfree(usblp);
|
kfree(usblp);
|
||||||
}
|
abort_ret:
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user