diff options
author | Andrzej Pietrasiewicz <andrzej.p@samsung.com> | 2014-11-06 11:11:57 +0100 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2014-11-06 16:18:17 -0600 |
commit | 634060870afbfbe37a567f35b78da9b74e81ad84 (patch) | |
tree | 084a15753b74f086b53d79afc52cbd1338a7679d /drivers/usb/gadget/function/f_hid.c | |
parent | 06529407329841ed836b30e4a99905a522ffa323 (diff) | |
download | lwn-634060870afbfbe37a567f35b78da9b74e81ad84.tar.gz lwn-634060870afbfbe37a567f35b78da9b74e81ad84.zip |
usb: gadget: f_hid: check return value of device_create
device_create() might fail, so check its return value and react
appropriately.
Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/gadget/function/f_hid.c')
-rw-r--r-- | drivers/usb/gadget/function/f_hid.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/usb/gadget/function/f_hid.c b/drivers/usb/gadget/function/f_hid.c index f3b3e19281ea..ad538811c48b 100644 --- a/drivers/usb/gadget/function/f_hid.c +++ b/drivers/usb/gadget/function/f_hid.c @@ -556,6 +556,7 @@ static int __init hidg_bind(struct usb_configuration *c, struct usb_function *f) { struct usb_ep *ep; struct f_hidg *hidg = func_to_hidg(f); + struct device *device; int status; dev_t dev; @@ -623,10 +624,16 @@ static int __init hidg_bind(struct usb_configuration *c, struct usb_function *f) if (status) 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; - +del: + cdev_del(&hidg->cdev); fail_free_descs: usb_free_all_descriptors(f); fail: |