usb_create_ep_devs() returns error code if an error occurs. But
usb_new_device() and create_intf_ep_devs() which use usb_create_ep_devs()
to create endpoint devices ignore the error and cut the propagation
of the error when usb_create_ep_devs() fails. So, usb_create_ep_devs()
prints an error message for debugging or notification purposes if an
error occurs.

Signed-off-by: Suwan Kim <[email protected]>
---
 drivers/usb/core/endpoint.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/core/endpoint.c b/drivers/usb/core/endpoint.c
index 1c2c04079676..ad3902c023d9 100644
--- a/drivers/usb/core/endpoint.c
+++ b/drivers/usb/core/endpoint.c
@@ -182,6 +182,7 @@ int usb_create_ep_devs(struct device *parent,
 
        ep_dev = kzalloc(sizeof(*ep_dev), GFP_KERNEL);
        if (!ep_dev) {
+               dev_err(parent, "endpoint device alloc failed\n");
                retval = -ENOMEM;
                goto exit;
        }
@@ -194,8 +195,10 @@ int usb_create_ep_devs(struct device *parent,
        dev_set_name(&ep_dev->dev, "ep_%02x", endpoint->desc.bEndpointAddress);
 
        retval = device_register(&ep_dev->dev);
-       if (retval)
+       if (retval) {
+               dev_err(parent, "endpoint device register failed\n");
                goto error_register;
+       }
 
        device_enable_async_suspend(&ep_dev->dev);
        endpoint->ep_dev = ep_dev;
-- 
2.20.1

Reply via email to