CDC EEM allows using a 'sentinel' ethernet frame CRC of 0xdeadbeef in place of a real CRC. In this driver the ethernet frame CRC is read as a little-endian value, but the 'sentinel' CRC value is actually big-endian. Therefore, if the 'sentinel' CRC option is being used, the CRC value read from the frame must be compared against a byte-reversed 0xdeadbeef. Signed-off-by: Brian Niebuhr <bniebuhr@xxxxxxxxxxxxx> --- drivers/net/usb/cdc_eem.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/net/usb/cdc_eem.c b/drivers/net/usb/cdc_eem.c index 45cebfb..9917b60 100644 --- a/drivers/net/usb/cdc_eem.c +++ b/drivers/net/usb/cdc_eem.c @@ -313,7 +313,7 @@ static int eem_rx_fixup(struct usbnet *dev, struct sk_buff *skb) if (header & BIT(14)) crc2 = ~crc32_le(~0, skb2->data, skb2->len); else - crc2 = 0xdeadbeef; + crc2 = 0xefbeadde; /* 0xdeadbeef */ if (is_last) return crc == crc2; -- 1.6.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html