[linux-dvb] Fwd: [PATCH] DVB-CORE: Bug in CRC-32 checking during ULE decapsulation on 64-bit system

Ang Way Chuang wcang at nrg.cs.usm.my
Tue Dec 12 04:46:37 CET 2006


Hi all,

     I am resending this email because the last email bounced back due to the large attachment.
Now the attachment has been trimmed down.

CRC-32 checking during ULE decapsulation always failed on x86_64 system due to the
size of a variable used to store CRC? Discovered this bug on Fedora Core 6 with 
kernel-2.6.18-1.2849. The i686 counterpart has no such problem. Attached is 
the output of dmesg showing the problem. Look for the last few lines for indication. 
This patch has been tested on 64-bit system as well as 32-bit system.
Guess this bug should affect 2.6.19 as well since dvb_net.c hasn't 
changed. Other kernel versions may be affected too. I am not sure why there is extra 0xff... for
64 bit unsigned long (I know it is 64 bit wide in 64-bit system) :-D. If this patch is relevant,
should I send a similar patch to Adrian Bunk for his 2.6.16.x tree? I haven't tested 2.6.16.x on my
64 bit system. Thanks in advance

Signed-off-by: Ang Way Chuang <wcang at nrg.cs.usm.my> 

--- linux-2.6.18.i386/drivers/media/dvb/dvb-core/dvb_net.c.bak  2006-12-07 23:45:04.000000000 +0800
+++ linux-2.6.18.i386/drivers/media/dvb/dvb-core/dvb_net.c      2006-12-07 23:45:31.000000000 +0800
@@ -604,7 +604,7 @@ static void dvb_net_ule( struct net_devi
                                { &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. */


-------------- next part --------------
1297: CRC32 check FAILED: 0xdbbada7a / 0xffffffffdbbada7a, SNDU len 46 type 0x1, ts_remain 133, next 2: ffff.
1299: CRC32 check FAILED: 0x8cc5697a / 0xffffffff8cc5697a, SNDU len 102 type 0x1, ts_remain 77, next 2: ffff.
1300: CRC32 check FAILED: 0x8748fbae / 0xffffffff8748fbae, SNDU len 102 type 0x1, ts_remain 77, next 2: ffff.
1302: CRC32 check FAILED: 0xdbbada7a / 0xffffffffdbbada7a, SNDU len 46 type 0x1, ts_remain 133, next 2: ffff.
1304: CRC32 check FAILED: 0xdbbada7a / 0xffffffffdbbada7a, SNDU len 46 type 0x1, ts_remain 133, next 2: ffff.
1305: CRC32 check FAILED: 0xed38bb7b / 0xffffffffed38bb7b, SNDU len 102 type 0x1, ts_remain 77, next 2: ffff.
1306: CRC32 check FAILED: 0xdbbada7a / 0xffffffffdbbada7a, SNDU len 46 type 0x1, ts_remain 133, next 2: ffff.
1307: CRC32 check FAILED: 0xb04717de / 0xffffffffb04717de, SNDU len 102 type 0x1, ts_remain 77, next 2: ffff.
1308: CRC32 check FAILED: 0x81251dbe / 0xffffffff81251dbe, SNDU len 102 type 0x1, ts_remain 77, next 2: ffff.
1309: CRC32 check FAILED: 0x92583cd5 / 0xffffffff92583cd5, SNDU len 102 type 0x1, ts_remain 77, next 2: ffff.


More information about the linux-dvb mailing list