[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <063D6719AE5E284EB5DD2968C1650D6D0F6F4388@AcuExch.aculab.com>
Date: Thu, 10 Apr 2014 09:14:56 +0000
From: David Laight <David.Laight@...LAB.COM>
To: 'Dan Carpenter' <dan.carpenter@...cle.com>,
Larry Finger <Larry.Finger@...inger.net>
CC: "gregkh@...uxfoundation.org" <gregkh@...uxfoundation.org>,
"devel@...verdev.osuosl.org" <devel@...verdev.osuosl.org>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
Stable <stable@...r.kernel.org>
Subject: RE: [PATCH 2/3] staging: r8188eu: Fix case where ethtype was never
obtained and always be checked against 0
From: Dan Carpenter
...
> > - if (auth_alg == 2) {
> > + if (auth_alg == dot11AuthAlgrthm_8021X) {
> > + /* get ether_type */
> > + ptr = ptr + pfhdr->attrib.hdrlen + LLC_HEADER_SIZE;
> > + memcpy(ðer_type, ptr, 2);
> > + ether_type = ntohs((unsigned short)ether_type);
>
> This cast doesn't make sense. u16 and unsigned short are the same
> thing. Anyway, the "ether_type" should be declared as __be16 because
> it's network endian.
Is it worth doing just:
ether_type = ptr[0] << 8 | ptr[1];
Or, if 'ptr' can't be misaligned, just reading a BE short.
If the compiler doesn't inline memcpy() the above code is horrid.
Are there MD inline functions for reading misaligned 16/32 bit date
with specific endianness?
David
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists