diff options
Diffstat (limited to 'drivers/usb/misc/usbled.c')
-rw-r--r-- | drivers/usb/misc/usbled.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/drivers/usb/misc/usbled.c b/drivers/usb/misc/usbled.c index f441964132c0..49c5c5c4c431 100644 --- a/drivers/usb/misc/usbled.c +++ b/drivers/usb/misc/usbled.c | |||
@@ -9,7 +9,6 @@ | |||
9 | * | 9 | * |
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/config.h> | ||
13 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
14 | #include <linux/errno.h> | 13 | #include <linux/errno.h> |
15 | #include <linux/init.h> | 14 | #include <linux/init.h> |
@@ -109,22 +108,34 @@ static int led_probe(struct usb_interface *interface, const struct usb_device_id | |||
109 | dev = kzalloc(sizeof(struct usb_led), GFP_KERNEL); | 108 | dev = kzalloc(sizeof(struct usb_led), GFP_KERNEL); |
110 | if (dev == NULL) { | 109 | if (dev == NULL) { |
111 | dev_err(&interface->dev, "Out of memory\n"); | 110 | dev_err(&interface->dev, "Out of memory\n"); |
112 | goto error; | 111 | goto error_mem; |
113 | } | 112 | } |
114 | 113 | ||
115 | dev->udev = usb_get_dev(udev); | 114 | dev->udev = usb_get_dev(udev); |
116 | 115 | ||
117 | usb_set_intfdata (interface, dev); | 116 | usb_set_intfdata (interface, dev); |
118 | 117 | ||
119 | device_create_file(&interface->dev, &dev_attr_blue); | 118 | retval = device_create_file(&interface->dev, &dev_attr_blue); |
120 | device_create_file(&interface->dev, &dev_attr_red); | 119 | if (retval) |
121 | device_create_file(&interface->dev, &dev_attr_green); | 120 | goto error; |
121 | retval = device_create_file(&interface->dev, &dev_attr_red); | ||
122 | if (retval) | ||
123 | goto error; | ||
124 | retval = device_create_file(&interface->dev, &dev_attr_green); | ||
125 | if (retval) | ||
126 | goto error; | ||
122 | 127 | ||
123 | dev_info(&interface->dev, "USB LED device now attached\n"); | 128 | dev_info(&interface->dev, "USB LED device now attached\n"); |
124 | return 0; | 129 | return 0; |
125 | 130 | ||
126 | error: | 131 | error: |
132 | device_remove_file(&interface->dev, &dev_attr_blue); | ||
133 | device_remove_file(&interface->dev, &dev_attr_red); | ||
134 | device_remove_file(&interface->dev, &dev_attr_green); | ||
135 | usb_set_intfdata (interface, NULL); | ||
136 | usb_put_dev(dev->udev); | ||
127 | kfree(dev); | 137 | kfree(dev); |
138 | error_mem: | ||
128 | return retval; | 139 | return retval; |
129 | } | 140 | } |
130 | 141 | ||