From: Malcolm Priestley Date: Mon, 14 Oct 2013 18:44:13 +0000 (+0100) Subject: staging: vt6656: return if pControlURB->hcpriv not NULL X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=e1feda132fdf3e8d16689bbc6af38d40278a4e92;p=openwrt%2Fstaging%2Fblogic.git staging: vt6656: return if pControlURB->hcpriv not NULL Fixes occasional urb submitted while active. Even thought the fMP_CONTROL_WRITES/fMP_CONTROL_READS flags are cleared in the return context urb->hcpriv is not NULL. check for hcpriv and return STATUS_FAILURE if not NULL. Signed-off-by: Malcolm Priestley Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/vt6656/usbpipe.c b/drivers/staging/vt6656/usbpipe.c index fc9b6ee4849c..5fc18ad822d3 100644 --- a/drivers/staging/vt6656/usbpipe.c +++ b/drivers/staging/vt6656/usbpipe.c @@ -118,6 +118,9 @@ int PIPEnsControlOut(struct vnt_private *pDevice, u8 byRequest, u16 wValue, if (pDevice->Flags & fMP_CONTROL_READS) return STATUS_FAILURE; + if (pDevice->pControlURB->hcpriv) + return STATUS_FAILURE; + MP_SET_FLAG(pDevice, fMP_CONTROL_WRITES); pDevice->sUsbCtlRequest.bRequestType = 0x40; @@ -177,6 +180,9 @@ int PIPEnsControlIn(struct vnt_private *pDevice, u8 byRequest, u16 wValue, if (pDevice->Flags & fMP_CONTROL_WRITES) return STATUS_FAILURE; + if (pDevice->pControlURB->hcpriv) + return STATUS_FAILURE; + MP_SET_FLAG(pDevice, fMP_CONTROL_READS); pDevice->sUsbCtlRequest.bRequestType = 0xC0;