]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
usb: gadget: tegra: check ep->desc before calling ep_index
authorKerwin Wan <kerwinw@nvidia.com>
Thu, 24 Apr 2014 09:15:27 +0000 (17:15 +0800)
committerKerwin Wan <kerwinw@nvidia.com>
Tue, 6 May 2014 05:49:04 +0000 (22:49 -0700)
tegra_ep_disable will set ep->desc to be NULL. So in tegra_ep_dequeue,
ep->desc needs to be checked before calling ep_index or kernel panic
may happen due to NULL pointer.

Bug 1506083

Change-Id: I24390d863d3e31cb02a8e53015e1d0137f18487a
Signed-off-by: Kerwin Wan <kerwinw@nvidia.com>
Reviewed-on: http://git-master/r/400828
(cherry picked from commit 1a25c75ce4fbd29cbde10122e829201f762ef26e)
Reviewed-on: http://git-master/r/405001
Reviewed-by: Rakesh Babu Bodla <rbodla@nvidia.com>
Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>
drivers/usb/gadget/tegra_udc.c

index 7fbbc31aeac207057a877f2ad0d7b6bca74e3677..7d1c0e6b5305f7cd05672c2d47e71d504758d97e 100644 (file)
@@ -1087,6 +1087,10 @@ static int tegra_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
                return -EINVAL;
 
        spin_lock_irqsave(&ep->udc->lock, flags);
+       if (!ep->desc) {
+               spin_unlock_irqrestore(&ep->udc->lock, flags);
+               return -EINVAL;
+       }
        stopped = ep->stopped;
 
        /* Stop the ep before we deal with the queue */