summaryrefslogtreecommitdiff
path: root/drivers/usb/gadget/function
diff options
context:
space:
mode:
authorManu Gautam <mgautam@codeaurora.org>2016-04-20 09:57:30 +0530
committerHemant Kumar <hemantk@codeaurora.org>2016-08-12 09:58:08 -0700
commit915bb5f040dcc395ca28cc1b9c95dd802eab6bd5 (patch)
tree3d56a777d2dc0874701a9a0a949587974807f4fe /drivers/usb/gadget/function
parent239e2be709b74d2bbcdbb8c37c9d1842837ef391 (diff)
USB: f_accessory: Fix crash if driver failed to initialize
If accessory driver setup fails then _acc_dev points to freed memory and later drivers crashes on disconnect due to invalid memory access. Mark _acc_dev only if acc_setup is successful to prevent the crash. Change-Id: Ica933a7cf710ff082c54db77f94f802b6832bedb Signed-off-by: Manu Gautam <mgautam@codeaurora.org>
Diffstat (limited to 'drivers/usb/gadget/function')
-rw-r--r--drivers/usb/gadget/function/f_accessory.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/usb/gadget/function/f_accessory.c b/drivers/usb/gadget/function/f_accessory.c
index 028bde7b0241..3908bc151c2b 100644
--- a/drivers/usb/gadget/function/f_accessory.c
+++ b/drivers/usb/gadget/function/f_accessory.c
@@ -1242,13 +1242,13 @@ static int acc_setup(void)
INIT_DELAYED_WORK(&dev->start_work, acc_start_work);
INIT_WORK(&dev->hid_work, acc_hid_work);
- /* _acc_dev must be set before calling usb_gadget_register_driver */
- _acc_dev = dev;
-
ret = misc_register(&acc_device);
if (ret)
goto err;
+ /* _acc_dev must be set before calling usb_gadget_register_driver */
+ _acc_dev = dev;
+
return 0;
err: