V4L/DVB (4972): Dvb-core: fix bug in CRC-32 checking on 64-bit systems
authorAng Way Chuang <wcang@nrg.cs.usm.my>
Thu, 14 Dec 2006 16:51:44 +0000 (13:51 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Wed, 27 Dec 2006 16:19:10 +0000 (14:19 -0200)
CRC-32 checking during ULE decapsulation always failed on x86_64 systems due
to the size of a variable used to store CRC. This bug was discovered on
Fedora Core 6 with kernel-2.6.18-1.2849. The i386 counterpart has no such
problem. This patch has been tested on 64-bit system as well as 32-bit system.

Signed-off-by: Ang Way Chuang <wcang@nrg.cs.usm.my>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/dvb/dvb-core/dvb_net.c

index ebf4dc5190f68bbf2ebcc201b26f59ca43962dcf..8138b37d914df48b5a1cb3bb93f702517a39a2ac 100644 (file)
@@ -605,7 +605,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len )
                                { &utype, sizeof utype },
                                { priv->ule_skb->data, priv->ule_skb->len - 4 }
                        };
-                       unsigned long ule_crc = ~0L, expected_crc;
+                       u32 ule_crc = ~0L, expected_crc;
                        if (priv->ule_dbit) {
                                /* Set D-bit for CRC32 verification,
                                 * if it was set originally. */