aboutsummaryrefslogtreecommitdiffstats
path: root/usb.current/usb-gadget-eth-fix-calculate-crc32-in-eem.patch
blob: 9534a591bd705e0d74204fafa4edcb00b7c5206b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
From Jiri.Pinkava@vscht.cz  Mon Jun 21 14:40:59 2010
From: Jiri Pinkava <jiri.pinkava@vscht.cz>
Date: Sun, 20 Jun 2010 20:05:52 +0200
Subject: USB: gadget eth: Fix calculate CRC32 in EEM
To: linux-usb@vger.kernel.org, dbrownell@users.sourceforge.net
Cc: gregkh@suse.de, bniebuhr@efjohnson.com, tj@kernel.org, stevel@netspectrum.com
Message-ID: <4C1E5880.4050007@vscht.cz>


CRC should be calculated for Ethernet frame, not for whole recievede EEM data.
This bug shows rarely, because in many times len == skb->len.

Signed-off-by: Jiri Pinkava <jiri.pinkava@vscht.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/usb/gadget/f_eem.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

--- a/drivers/usb/gadget/f_eem.c
+++ b/drivers/usb/gadget/f_eem.c
@@ -469,8 +469,7 @@ static int eem_unwrap(struct gether *por
 				crc = get_unaligned_le32(skb->data + len
 							- ETH_FCS_LEN);
 				crc2 = ~crc32_le(~0,
-						skb->data,
-						skb->len - ETH_FCS_LEN);
+						skb->data, len - ETH_FCS_LEN);
 			} else {
 				crc = get_unaligned_be32(skb->data + len
 							- ETH_FCS_LEN);