brcm2708: update 3.10 patches with raspberrypi/rpi-3.10.y of 27 Apr. 2014
[openwrt/staging/blogic.git] / target / linux / brcm2708 / patches-3.10 / 0082-dwc_otg-prevent-OOPSes-during-device-disconnects.patch
index 5cfc919344947837e3b8bb3e686024230d582498..129dc0894b4ec2261516ae2314daf1a06f4b6708 100644 (file)
@@ -1,7 +1,7 @@
-From dc570a70493daf0ec548ff57f1a1a9fb31caccb7 Mon Sep 17 00:00:00 2001
+From 2e2f1ef719a2fa55fd1d95d9536fa8cca94459a4 Mon Sep 17 00:00:00 2001
 From: P33M <P33M@github.com>
 Date: Thu, 18 Jul 2013 17:07:26 +0100
-Subject: [PATCH 082/174] dwc_otg: prevent OOPSes during device disconnects
+Subject: [PATCH 082/196] dwc_otg: prevent OOPSes during device disconnects
 
 The dwc_otg_urb_enqueue function is thread-unsafe. In particular the
 access of urb->hcpriv, usb_hcd_link_urb_to_ep, dwc_otg_urb->qtd and
@@ -20,9 +20,11 @@ critical section.
  drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c |  6 +-----
  3 files changed, 6 insertions(+), 17 deletions(-)
 
+diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+index af9108c..a1970dc 100644
 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
 +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
-@@ -464,7 +464,6 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
+@@ -464,7 +464,6 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
                            dwc_otg_hcd_urb_t * dwc_otg_urb, void **ep_handle,
                            int atomic_alloc)
  {
@@ -30,7 +32,7 @@ critical section.
        int retval = 0;
        uint8_t needs_scheduling = 0;
        dwc_otg_transaction_type_e tr_type;
-@@ -515,12 +514,10 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
+@@ -515,12 +514,10 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
        }
  
        if(needs_scheduling) {
@@ -43,9 +45,11 @@ critical section.
        }
        return retval;
  }
+diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
+index 0f72bd5..ad03ff1 100644
 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
 +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
-@@ -679,9 +679,7 @@ static int dwc_otg_urb_enqueue(struct us
+@@ -679,9 +679,7 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28)
        struct usb_host_endpoint *ep = urb->ep;
  #endif
@@ -55,7 +59,7 @@ critical section.
          void **ref_ep_hcpriv = &ep->hcpriv;
        dwc_otg_hcd_t *dwc_otg_hcd = hcd_to_dwc_otg_hcd(hcd);
        dwc_otg_hcd_urb_t *dwc_otg_urb;
-@@ -733,7 +731,6 @@ static int dwc_otg_urb_enqueue(struct us
+@@ -733,7 +731,6 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
        if(dwc_otg_urb == NULL)
                return -ENOMEM;
  
@@ -63,7 +67,7 @@ critical section.
        if (!dwc_otg_urb && urb->number_of_packets)
                return -ENOMEM;
  
-@@ -775,10 +772,10 @@ static int dwc_otg_urb_enqueue(struct us
+@@ -775,10 +772,10 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
                                                    iso_frame_desc[i].length);
        }
  
@@ -76,7 +80,7 @@ critical section.
        if (0 == retval)
  #endif
        {
-@@ -794,17 +791,16 @@ static int dwc_otg_urb_enqueue(struct us
+@@ -794,17 +791,16 @@ static int dwc_otg_urb_enqueue(struct usb_hcd *hcd,
                                                urb);
                        }
                } else {
@@ -97,9 +101,11 @@ critical section.
        return retval;
  }
  
+diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
+index 8125307..5aed416 100644
 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
 +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
-@@ -919,6 +919,7 @@ void dwc_otg_hcd_qtd_init(dwc_otg_qtd_t
+@@ -919,6 +919,7 @@ void dwc_otg_hcd_qtd_init(dwc_otg_qtd_t * qtd, dwc_otg_hcd_urb_t * urb)
   * QH to place the QTD into.  If it does not find a QH, then it will create a
   * new QH. If the QH to which the QTD is added is not currently scheduled, it
   * is placed into the proper schedule based on its EP type.
@@ -107,7 +113,7 @@ critical section.
   *
   * @param[in] qtd The QTD to add
   * @param[in] hcd The DWC HCD structure
-@@ -931,8 +932,6 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t *
+@@ -931,8 +932,6 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd,
                        dwc_otg_hcd_t * hcd, dwc_otg_qh_t ** qh, int atomic_alloc)
  {
        int retval = 0;
@@ -116,7 +122,7 @@ critical section.
        dwc_otg_hcd_urb_t *urb = qtd->urb;
  
        /*
-@@ -946,15 +945,12 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t *
+@@ -946,15 +945,12 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd,
                        goto done;
                }
        }
@@ -132,3 +138,6 @@ critical section.
  done:
  
        return retval;
+-- 
+1.9.1
+