aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/class
diff options
context:
space:
mode:
authorJulia Lawall <julia@diku.dk>2008-07-16 12:00:42 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2008-10-17 17:40:51 -0400
commit49b707b90c7f7260beb8691fc5d99d71a5549ec0 (patch)
tree168692010834d1ec378cf8b7810159a7bebf85a8 /drivers/usb/class
parent5b775f672cc993ba9dba5626811ab1f2ac42883b (diff)
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>
Diffstat (limited to 'drivers/usb/class')
-rw-r--r--drivers/usb/class/usblp.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c
index 0647164d36db..68a2239cd0b6 100644
--- a/drivers/usb/class/usblp.c
+++ b/drivers/usb/class/usblp.c
@@ -1076,15 +1076,16 @@ static int usblp_probe(struct usb_interface *intf,
1076 const struct usb_device_id *id) 1076 const struct usb_device_id *id)
1077{ 1077{
1078 struct usb_device *dev = interface_to_usbdev (intf); 1078 struct usb_device *dev = interface_to_usbdev (intf);
1079 struct usblp *usblp = NULL; 1079 struct usblp *usblp;
1080 int protocol; 1080 int protocol;
1081 int retval; 1081 int retval;
1082 1082
1083 /* Malloc and start initializing usblp structure so we can use it 1083 /* Malloc and start initializing usblp structure so we can use it
1084 * directly. */ 1084 * directly. */
1085 if (!(usblp = kzalloc(sizeof(struct usblp), GFP_KERNEL))) { 1085 usblp = kzalloc(sizeof(struct usblp), GFP_KERNEL);
1086 if (!usblp) {
1086 retval = -ENOMEM; 1087 retval = -ENOMEM;
1087 goto abort; 1088 goto abort_ret;
1088 } 1089 }
1089 usblp->dev = dev; 1090 usblp->dev = dev;
1090 mutex_init(&usblp->wmut); 1091 mutex_init(&usblp->wmut);
@@ -1179,12 +1180,11 @@ abort_intfdata:
1179 usb_set_intfdata (intf, NULL); 1180 usb_set_intfdata (intf, NULL);
1180 device_remove_file(&intf->dev, &dev_attr_ieee1284_id); 1181 device_remove_file(&intf->dev, &dev_attr_ieee1284_id);
1181abort: 1182abort:
1182 if (usblp) { 1183 kfree(usblp->readbuf);
1183 kfree(usblp->readbuf); 1184 kfree(usblp->statusbuf);
1184 kfree(usblp->statusbuf); 1185 kfree(usblp->device_id_string);
1185 kfree(usblp->device_id_string); 1186 kfree(usblp);
1186 kfree(usblp); 1187abort_ret:
1187 }
1188 return retval; 1188 return retval;
1189} 1189}
1190 1190