|
@@ -556,6 +556,7 @@ static int __init hidg_bind(struct usb_configuration *c, struct usb_function *f)
|
|
{
|
|
{
|
|
struct usb_ep *ep;
|
|
struct usb_ep *ep;
|
|
struct f_hidg *hidg = func_to_hidg(f);
|
|
struct f_hidg *hidg = func_to_hidg(f);
|
|
|
|
+ struct device *device;
|
|
int status;
|
|
int status;
|
|
dev_t dev;
|
|
dev_t dev;
|
|
|
|
|
|
@@ -623,10 +624,16 @@ static int __init hidg_bind(struct usb_configuration *c, struct usb_function *f)
|
|
if (status)
|
|
if (status)
|
|
goto fail_free_descs;
|
|
goto fail_free_descs;
|
|
|
|
|
|
- device_create(hidg_class, NULL, dev, NULL, "%s%d", "hidg", hidg->minor);
|
|
|
|
|
|
+ device = device_create(hidg_class, NULL, dev, NULL,
|
|
|
|
+ "%s%d", "hidg", hidg->minor);
|
|
|
|
+ if (IS_ERR(device)) {
|
|
|
|
+ status = PTR_ERR(device);
|
|
|
|
+ goto del;
|
|
|
|
+ }
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
-
|
|
|
|
|
|
+del:
|
|
|
|
+ cdev_del(&hidg->cdev);
|
|
fail_free_descs:
|
|
fail_free_descs:
|
|
usb_free_all_descriptors(f);
|
|
usb_free_all_descriptors(f);
|
|
fail:
|
|
fail:
|