diff options
Diffstat (limited to 'target/linux/brcm2708/patches-3.10/0049-dwc_otg-Fix-unsafe-access-of-QTD-during-URB-enqueue.patch')
-rw-r--r-- | target/linux/brcm2708/patches-3.10/0049-dwc_otg-Fix-unsafe-access-of-QTD-during-URB-enqueue.patch | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/target/linux/brcm2708/patches-3.10/0049-dwc_otg-Fix-unsafe-access-of-QTD-during-URB-enqueue.patch b/target/linux/brcm2708/patches-3.10/0049-dwc_otg-Fix-unsafe-access-of-QTD-during-URB-enqueue.patch index 089165341a..1eff3b1dbe 100644 --- a/target/linux/brcm2708/patches-3.10/0049-dwc_otg-Fix-unsafe-access-of-QTD-during-URB-enqueue.patch +++ b/target/linux/brcm2708/patches-3.10/0049-dwc_otg-Fix-unsafe-access-of-QTD-during-URB-enqueue.patch @@ -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 + |