diff options
author | Hemant Kumar <hemantk@codeaurora.org> | 2016-04-14 11:39:00 -0700 |
---|---|---|
committer | Jeevan Shriram <jshriram@codeaurora.org> | 2016-04-22 15:04:06 -0700 |
commit | 599b6b32a0681200ad943c13eeee98f0f1829ff4 (patch) | |
tree | 899579a189ce0a754077170f668ff29af598881d /drivers/usb | |
parent | a431c4747feb192a708d050a751c18b7fbffb98b (diff) |
usb: gadget: f_gsi: Fix bug in accessing evt queue lock
In case gsi_update_function_bind_params() returns failure
before initializing spin lock for event queue, gsi_bind()
continues further by calling post_event() which acquires
the uninitialized spin lock causing BUG. Hence check for
return value of gsi_update_function_bind_params() before
calling post_event().
CRs-Fixed: 1003784
Change-Id: I0fcad2467d15f311feecf3b9cee9209f7453485c
Signed-off-by: Hemant Kumar <hemantk@codeaurora.org>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/gadget/function/f_gsi.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/gadget/function/f_gsi.c b/drivers/usb/gadget/function/f_gsi.c index ea86bd9aad60..5a4aeca225d8 100644 --- a/drivers/usb/gadget/function/f_gsi.c +++ b/drivers/usb/gadget/function/f_gsi.c @@ -2486,6 +2486,8 @@ static int gsi_bind(struct usb_configuration *c, struct usb_function *f) } status = gsi_update_function_bind_params(gsi, cdev, &info); + if (status) + goto dereg_rndis; post_event(&gsi->d_port, EVT_INITIALIZED); queue_work(gsi->d_port.ipa_usb_wq, &gsi->d_port.usb_ipa_w); |