[PATCH upstream for stable 2/8] staging: vt6656: 64 bit- Correctly address void structure.

Malcolm Priestley tvboxspy at gmail.com
Thu Dec 27 22:47:35 UTC 2012


On Thu, 2012-12-27 at 20:09 +0100, Ben Hutchings wrote:
> On Thu, 2012-12-27 at 13:01 +0000, Malcolm Priestley wrote:
> > upstream 
> > commit e2efba763b472835fdface597fe2216b3403967e
> > 
> > Tested on kernels 2.6.35, 3.0, 3.2, 3.5 & 3.7
> > 
> > staging: vt6656: 64 bit- Correctly address void structure.
> >     
> > Fixes 64 bit deadlock on successful association.
> > 
> > Cc: stable at kernel.org  # 2.6.35+
> > Signed-off-by: Malcolm Priestley <tvboxspy at gmail.com>
> > Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
> > 
> > diff --git a/drivers/staging/vt6656/rxtx.c b/drivers/staging/vt6656/rxtx.c
> > index 0f35a9a..1f87213 100644
> > --- a/drivers/staging/vt6656/rxtx.c
> > +++ b/drivers/staging/vt6656/rxtx.c
> > @@ -1452,12 +1452,10 @@ s_bPacketToWirelessUsb(
> >  
> > 
> >      pvRrvTime = pMICHDR = pvRTS = pvCTS = pvTxDataHd = NULL;
> > -    if ((bNeedEncryption) && (pTransmitKey != NULL))  {
> > -        if (((PSKeyTable) (pTransmitKey->pvKeyTable))->bSoftWEP == TRUE) {
> > -            // WEP 256
> > -            bSoftWEP = TRUE;
> > -        }
> > -    }
> > +	if (bNeedEncryption && pTransmitKey->pvKeyTable) {
> > +		if (((PSKeyTable)&pTransmitKey->pvKeyTable)->bSoftWEP == TRUE)
> > +			bSoftWEP = TRUE; /* WEP 256 */
> > +	}
> 
> This cast is blatantly wrong - pvKeyTable points to and SKeyTable; it's
> not the first element of an SKeyTable.
> 
> Greg, I suggest you revert this upstream as it's only 'fixing' the
> problem by chance.
> 
Hi Ben,

Ah, you are correct.

However, as it stands, reverting upstream on 64 bit will cause
a regression.

I haven't found any regressions on 32bit and it is only a
condition check. Only WEP 256 users affected and the chances
of the address hitting TRUE(1) during WEP/WPA negotiation.

I would prefer to submit a patch to correct upstream.


Regards


Malcolm



> Ben.
> 
> >      pTxBufHead = (PTX_BUFFER) usbPacketBuf;
> >      memset(pTxBufHead, 0, sizeof(TX_BUFFER));
> > 
> > 
> 
> 









More information about the kernel-team mailing list