Explorar o código

USB: gadget eth: Fix calculate CRC32 in EEM

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>
Jiri Pinkava %!s(int64=15) %!d(string=hai) anos
pai
achega
03ab7461df
Modificáronse 1 ficheiros con 1 adicións e 2 borrados
  1. 1 2
      drivers/usb/gadget/f_eem.c

+ 1 - 2
drivers/usb/gadget/f_eem.c

@@ -469,8 +469,7 @@ static int eem_unwrap(struct gether *port,
 				crc = get_unaligned_le32(skb->data + len
 				crc = get_unaligned_le32(skb->data + len
 							- ETH_FCS_LEN);
 							- ETH_FCS_LEN);
 				crc2 = ~crc32_le(~0,
 				crc2 = ~crc32_le(~0,
-						skb->data,
-						skb->len - ETH_FCS_LEN);
+						skb->data, len - ETH_FCS_LEN);
 			} else {
 			} else {
 				crc = get_unaligned_be32(skb->data + len
 				crc = get_unaligned_be32(skb->data + len
 							- ETH_FCS_LEN);
 							- ETH_FCS_LEN);