brcm2708: update 3.10 patches with raspberrypi/rpi-3.10.y of 27 Apr. 2014
[15.05/openwrt.git] / target / linux / brcm2708 / patches-3.10 / 0049-dwc_otg-Fix-unsafe-access-of-QTD-during-URB-enqueue.patch
index 0891653..1eff3b1 100644 (file)
@@ -1,7 +1,7 @@
-From 08e3e98d28e32852e43bf25fb3e64bb3f5e6af4d Mon Sep 17 00:00:00 2001
+From 1ef8aaf1ef348a22b72ba4367c5e2e5727542f59 Mon Sep 17 00:00:00 2001
 From: P33M <P33M@github.com>
 Date: Fri, 15 Feb 2013 22:36:47 +0000
-Subject: [PATCH 049/174] dwc_otg: Fix unsafe access of QTD during URB enqueue
+Subject: [PATCH 049/196] dwc_otg: Fix unsafe access of QTD during URB enqueue
 
 In dwc_otg_hcd_urb_enqueue during qtd creation, it was possible that the
 transaction could complete almost immediately after the qtd was assigned
@@ -17,9 +17,11 @@ that had no periodic endpoints (e.g. USB pendrive or some wlan devices).
  drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c |  2 +-
  2 files changed, 13 insertions(+), 12 deletions(-)
 
+diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
+index d5c94f4..e653d84 100644
 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
 +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
-@@ -462,6 +462,8 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
+@@ -462,6 +462,8 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
  {
        dwc_irqflags_t flags;
        int retval = 0;
@@ -28,7 +30,7 @@ that had no periodic endpoints (e.g. USB pendrive or some wlan devices).
        dwc_otg_qtd_t *qtd;
        gintmsk_data_t intr_mask = {.d32 = 0 };
  
-@@ -493,22 +495,22 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
+@@ -493,22 +495,22 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
                return -DWC_E_NO_MEMORY;
        }
  #endif
@@ -61,7 +63,7 @@ that had no periodic endpoints (e.g. USB pendrive or some wlan devices).
                DWC_SPINLOCK_IRQSAVE(hcd->lock, &flags);
                tr_type = dwc_otg_hcd_select_transactions(hcd);
                if (tr_type != DWC_OTG_TRANSACTION_NONE) {
-@@ -516,7 +518,6 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_
+@@ -516,7 +518,6 @@ int dwc_otg_hcd_urb_enqueue(dwc_otg_hcd_t * hcd,
                }
                DWC_SPINUNLOCK_IRQRESTORE(hcd->lock, flags);
        }
@@ -69,9 +71,11 @@ that had no periodic endpoints (e.g. USB pendrive or some wlan devices).
        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 b337e1b..b3e6e52 100644
 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
 +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
-@@ -937,7 +937,7 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t *
+@@ -937,7 +937,7 @@ int dwc_otg_hcd_qtd_add(dwc_otg_qtd_t * qtd,
        if (*qh == NULL) {
                *qh = dwc_otg_hcd_qh_create(hcd, urb, atomic_alloc);
                if (*qh == NULL) {
@@ -80,3 +84,6 @@ that had no periodic endpoints (e.g. USB pendrive or some wlan devices).
                        goto done;
                }
        }
+-- 
+1.9.1
+