From: Greg Kroah-Hartman Date: Wed, 2 Oct 2013 16:55:11 +0000 (-0700) Subject: 3.0-stable patches X-Git-Tag: v3.0.99~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b901e8992f894656eab5043741001f4e84b0af32;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: staging-vt6656-main_usb.c-oops-on-device_close-move-flag-earlier.patch --- diff --git a/queue-3.0/series b/queue-3.0/series index 7b5f1b30187..c488386d1d0 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -1,2 +1,3 @@ x86-reboot-add-quirk-to-make-dell-c6100-use-reboot-pci-automatically.patch x86-efi-don-t-map-boot-services-on-i386.patch +staging-vt6656-main_usb.c-oops-on-device_close-move-flag-earlier.patch diff --git a/queue-3.0/staging-vt6656-main_usb.c-oops-on-device_close-move-flag-earlier.patch b/queue-3.0/staging-vt6656-main_usb.c-oops-on-device_close-move-flag-earlier.patch new file mode 100644 index 00000000000..bc2375a68d6 --- /dev/null +++ b/queue-3.0/staging-vt6656-main_usb.c-oops-on-device_close-move-flag-earlier.patch @@ -0,0 +1,45 @@ +From e3eb270fab7734427dd8171a93e4946fe28674bc Mon Sep 17 00:00:00 2001 +From: Malcolm Priestley +Date: Sun, 22 Sep 2013 19:48:54 +0100 +Subject: staging: vt6656: [BUG] main_usb.c oops on device_close move flag earlier. + +From: Malcolm Priestley + +commit e3eb270fab7734427dd8171a93e4946fe28674bc upstream. + +The vt6656 is prone to resetting on the usb bus. + +It seems there is a race condition and wpa supplicant is +trying to open the device via iw_handlers before its actually +closed at a stage that the buffers are being removed. + +The device is longer considered open when the +buffers are being removed. So move ~DEVICE_FLAGS_OPENED +flag to before freeing the device buffers. + +Signed-off-by: Malcolm Priestley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/staging/vt6656/main_usb.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/staging/vt6656/main_usb.c ++++ b/drivers/staging/vt6656/main_usb.c +@@ -1228,6 +1228,8 @@ device_release_WPADEV(pDevice); + memset(pMgmt->abyCurrBSSID, 0, 6); + pMgmt->eCurrState = WMAC_STATE_IDLE; + ++ pDevice->flags &= ~DEVICE_FLAGS_OPENED; ++ + device_free_tx_bufs(pDevice); + device_free_rx_bufs(pDevice); + device_free_int_bufs(pDevice); +@@ -1239,7 +1241,6 @@ device_release_WPADEV(pDevice); + usb_free_urb(pDevice->pInterruptURB); + + BSSvClearNodeDBTable(pDevice, 0); +- pDevice->flags &=(~DEVICE_FLAGS_OPENED); + + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "device_close2 \n"); +