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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ang Way Chuang wrote:
> My name is Way Chuang :) I adopt chinese way of displaying name. Surname 
> first.

Sorry about that, Way Chuang.  I also apologize in advance, because I will
probably forget and make the same mistake again in the future.  :-P  I'll
try to remember.

> 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.

Your patch produces the following:

  CC [M]  /home/mk/v4l-dvb/v4l/dvb_net.o
/home/mk/v4l-dvb/v4l/dvb_net.c: In function 'dvb_net_ule':
/home/mk/v4l-dvb/v4l/dvb_net.c:628: warning: format '%#lx' expects type 'long unsigned int', but argument 3 has type 'u32'
/home/mk/v4l-dvb/v4l/dvb_net.c:628: warning: format '%#lx' expects type 'long unsigned int', but argument 4 has type 'u32'

I fixed that problem with the following patch... (please see attached)

Regards,

Michael Krufky

fix warning:

dvb_net.c: In function 'dvb_net_ule':
dvb_net.c:628: warning: format '%#lx' expects type 'long unsigned int', but argument 3 has type 'u32'
dvb_net.c:628: warning: format '%#lx' expects type 'long unsigned int', but argument 4 has type 'u32'

Signed-off-by: Michael Krufky <mkrufky@xxxxxxxxxxx>

--- v4l-dvb.orig/linux/drivers/media/dvb/dvb-core/dvb_net.c
+++ v4l-dvb/linux/drivers/media/dvb/dvb-core/dvb_net.c
@@ -624,7 +624,7 @@ static void dvb_net_ule( struct net_devi
 				       *((u8 *)priv->ule_skb->tail - 2) << 8 |
 				       *((u8 *)priv->ule_skb->tail - 1);
 			if (ule_crc != expected_crc) {
-				printk(KERN_WARNING "%lu: CRC32 check FAILED: %#lx / %#lx, SNDU len %d type %#x, ts_remain %d, next 2: %x.\n",
+				printk(KERN_WARNING "%lu: CRC32 check FAILED: %08x / %08x, SNDU len %d type %#x, ts_remain %d, next 2: %x.\n",
 				       priv->ts_count, ule_crc, expected_crc, priv->ule_sndu_len, priv->ule_sndu_type, ts_remain, ts_remain > 2 ? *(unsigned short *)from_where : 0);
 
 #ifdef ULE_DEBUG
_______________________________________________
linux-dvb mailing list
linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux