aboutsummaryrefslogtreecommitdiff
path: root/drivers/usb/core/endpoint.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-10-17 15:05:22 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-17 15:05:22 -0700
commit699ddda6ecd5751fd05fd5128aa7f93438974468 (patch)
treeb09b6a347c2e437e9c8bd5cd87f94fe03944a437 /drivers/usb/core/endpoint.c
parentacbb67d51ef0ff942d592d44fb8abb4c931041ff (diff)
parentab352c2687a4361aec06a184ddb20deb1e5091eb (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6: (47 commits) USB: Add device id for Sierra Wireless MC8755 USB: cleanup sierra wireless driver a bit USB: Sierra Wireless driver update USB: ftdi_sio whitespace fixes USB-SERIAL:cp2101 Add new device ID USB/gadget/net2280: handle sysfs errors usbtouchscreen: fix data reading for ITM touchscreens UEAGLE: fix ueagle-atm Oops USB: xpad: dance pad support USB: input: extract() and implement() are bit field manipulation routines USB: Memory leak in drivers/usb/serial/airprime.c USB Storage: unusual_devs.h entry for Sony Ericsson P990i USB: fix usbatm tiny race USB: unusual_devs entry for Nokia 6234 USB: mos7840.c: fix a check-after-dereference USB: ftdi-elan.c: remove dead code USB: Mitsumi USB FDD 061M: UNUSUAL_DEV multilun fix USB: fix dereference in drivers/usb/misc/adutux.c USB: add USB serial mos7720 driver USB: move trancevibrator.c to the proper usb directory ...
Diffstat (limited to 'drivers/usb/core/endpoint.c')
-rw-r--r--drivers/usb/core/endpoint.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/drivers/usb/core/endpoint.c b/drivers/usb/core/endpoint.c
index 3ebb90149e9..3b2d137912b 100644
--- a/drivers/usb/core/endpoint.c
+++ b/drivers/usb/core/endpoint.c
@@ -223,7 +223,7 @@ int usb_create_ep_files(struct device *parent,
ep_dev = kzalloc(sizeof(*ep_dev), GFP_KERNEL);
if (!ep_dev) {
retval = -ENOMEM;
- goto exit;
+ goto error_alloc;
}
/* fun calculation to determine the minor of this endpoint */
@@ -241,33 +241,31 @@ int usb_create_ep_files(struct device *parent,
retval = device_register(&ep_dev->dev);
if (retval)
- goto error;
+ goto error_register;
retval = sysfs_create_group(&ep_dev->dev.kobj, &ep_dev_attr_grp);
if (retval)
goto error_group;
- endpoint->ep_dev = ep_dev;
-
/* create the symlink to the old-style "ep_XX" directory */
sprintf(name, "ep_%02x", endpoint->desc.bEndpointAddress);
- retval = sysfs_create_link(&parent->kobj,
- &endpoint->ep_dev->dev.kobj, name);
+ retval = sysfs_create_link(&parent->kobj, &ep_dev->dev.kobj, name);
if (retval)
goto error_link;
-exit:
+ endpoint->ep_dev = ep_dev;
return retval;
error_link:
sysfs_remove_group(&ep_dev->dev.kobj, &ep_dev_attr_grp);
-
error_group:
device_unregister(&ep_dev->dev);
- endpoint->ep_dev = NULL;
destroy_endpoint_class();
return retval;
-error:
+
+error_register:
kfree(ep_dev);
+error_alloc:
destroy_endpoint_class();
+exit:
return retval;
}
@@ -282,8 +280,6 @@ void usb_remove_ep_files(struct usb_host_endpoint *endpoint)
sysfs_remove_group(&endpoint->ep_dev->dev.kobj, &ep_dev_attr_grp);
device_unregister(&endpoint->ep_dev->dev);
endpoint->ep_dev = NULL;
+ destroy_endpoint_class();
}
- destroy_endpoint_class();
}
-
-