public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* voyager_{thread,cat}.c compile warnings
@ 2007-07-21 22:03 Gabriel C
  2007-07-22 15:33 ` Cédric Augonnet
  0 siblings, 1 reply; 5+ messages in thread
From: Gabriel C @ 2007-07-21 22:03 UTC (permalink / raw)
  To: Linux Kernel Mailing List

Hi,

I noticed this warnings on current git:


...

arch/i386/mach-voyager/voyager_thread.c: In function 'thread':
arch/i386/mach-voyager/voyager_thread.c:113: warning: no return statement in function returning non-void

...

I think return 0; is missing on line 112 here.


...

arch/i386/mach-voyager/voyager_cat.c: In function 'voyager_cat_init':
arch/i386/mach-voyager/voyager_cat.c:685: warning: comparison is always false due to limited range of data type
arch/i386/mach-voyager/voyager_cat.c:755: warning: comparison is always false due to limited range of data type

...


Regards,

Gabriel C


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: voyager_{thread,cat}.c compile warnings
  2007-07-21 22:03 voyager_{thread,cat}.c compile warnings Gabriel C
@ 2007-07-22 15:33 ` Cédric Augonnet
  2007-07-22 22:49   ` Cédric Augonnet
  0 siblings, 1 reply; 5+ messages in thread
From: Cédric Augonnet @ 2007-07-22 15:33 UTC (permalink / raw)
  To: Gabriel C; +Cc: Linux Kernel Mailing List

[-- Attachment #1: Type: text/plain, Size: 1191 bytes --]

Hi,

2007/7/21, Gabriel C <nix.or.die@googlemail.com>:
> Hi,
>
> I noticed this warnings on current git:
>
>
> ...
>
> arch/i386/mach-voyager/voyager_thread.c: In function 'thread':
> arch/i386/mach-voyager/voyager_thread.c:113: warning: no return statement in function returning non-void
>
> ...
>
> I think return 0; is missing on line 112 here.
>

I guess there is no use in always returning 0, simply not returning anything and
putting a void type might be cleaner, especially as this function
seems to never
return.

>
> arch/i386/mach-voyager/voyager_cat.c: In function 'voyager_cat_init':
> arch/i386/mach-voyager/voyager_cat.c:685: warning: comparison is always false due to limited range of data type
> arch/i386/mach-voyager/voyager_cat.c:755: warning: comparison is always false due to limited range of data type
>

Hum perhaps it does not like the comparision of a __u16 and an unsigned int ?

I enclose some dummy patch that should perhaps solve these issues,
could not test it as i don't have the hardware... just my 2 cents.
Don't know if casting is an
acceptable workaround though.

>
>
> Regards,
>
> Gabriel C
>

Cheers,
Cédric

[-- Attachment #2: voyager.patch --]
[-- Type: text/x-diff, Size: 1439 bytes --]

Submitted by: Cedric Augonnet <cedric.augonnet@ens-lyon.org>
---
diff -urN a/arch/i386/mach-voyager/voyager_cat.c b/arch/i386/mach-voyager/voyager_cat.c
--- /home/gonnet/tmp/linux-2.6.22/arch/i386/mach-voyager/voyager_cat.c	2007-07-20 11:50:17.000000000 -0400
+++ linux-2.6.22/arch/i386/mach-voyager/voyager_cat.c	2007-07-22 11:24:34.000000000 -0400
@@ -682,7 +682,7 @@
 			outb(VOYAGER_CAT_END, CAT_CMD);
 			continue;
 		}
-		if(eprom_size > sizeof(eprom_buf)) {
+		if((unsigned)eprom_size > sizeof(eprom_buf)) {
 			printk("**WARNING**: Voyager insufficient size to read EPROM data, module 0x%x.  Need %d\n", i, eprom_size);
 			outb(VOYAGER_CAT_END, CAT_CMD);
 			continue;
@@ -752,7 +752,7 @@
 			outb(VOYAGER_CAT_END, CAT_CMD);
 			continue;
 		}
-		if(eprom_size > sizeof(eprom_buf)) {
+		if((unsigned)eprom_size > sizeof(eprom_buf)) {
 			printk("**WARNING**: Voyager insufficient size to read EPROM data, module 0x%x.  Need %d\n", i, eprom_size);
 			outb(VOYAGER_CAT_END, CAT_CMD);
 			continue;
diff -urN a/arch/i386/mach-voyager/voyager_thread.c b/arch/i386/mach-voyager/voyager_thread.c
--- /home/gonnet/tmp/linux-2.6.22/arch/i386/mach-voyager/voyager_thread.c	2007-07-20 11:50:17.000000000 -0400
+++ linux-2.6.22/arch/i386/mach-voyager/voyager_thread.c	2007-07-22 11:27:13.000000000 -0400
@@ -92,7 +92,7 @@
 	}
 }
 
-static int
+static void
 thread(void *unused)
 {
 	printk(KERN_NOTICE "Voyager starting monitor thread\n");

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: voyager_{thread,cat}.c compile warnings
  2007-07-22 15:33 ` Cédric Augonnet
@ 2007-07-22 22:49   ` Cédric Augonnet
  2007-07-22 23:39     ` James Bottomley
  0 siblings, 1 reply; 5+ messages in thread
From: Cédric Augonnet @ 2007-07-22 22:49 UTC (permalink / raw)
  To: Gabriel C; +Cc: Linux Kernel Mailing List, J.E.J.Bottomley

[-- Attachment #1: Type: text/plain, Size: 1381 bytes --]

2007/7/22, Cédric Augonnet <cedric.augonnet@gmail.com>:
> Hi,
>
> 2007/7/21, Gabriel C <nix.or.die@googlemail.com>:
> > Hi,
> >
> > I noticed this warnings on current git:
> >
> >
> > ...
> >
> > arch/i386/mach-voyager/voyager_thread.c: In function 'thread':
> > arch/i386/mach-voyager/voyager_thread.c:113: warning: no return statement in function returning non-void
> >
> > ...
> >
> > I think return 0; is missing on line 112 here.
> >
>
> I guess there is no use in always returning 0, simply not returning anything and
> putting a void type might be cleaner, especially as this function
> seems to never
> return.
>
> >
> > arch/i386/mach-voyager/voyager_cat.c: In function 'voyager_cat_init':
> > arch/i386/mach-voyager/voyager_cat.c:685: warning: comparison is always false due to limited range of data type
> > arch/i386/mach-voyager/voyager_cat.c:755: warning: comparison is always false due to limited range of data type
> >
>
> Hum perhaps it does not like the comparision of a __u16 and an unsigned int ?
>
> I enclose some dummy patch that should perhaps solve these issues,
> could not test it as i don't have the hardware... just my 2 cents.
> Don't know if casting is an
> acceptable workaround though.
>
> >
> >
> > Regards,
> >
> > Gabriel C
> >
>
> Cheers,
> Cédric
>
>

(forgot to cc the maintainer, sorry ...)

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: voyager.patch --]
[-- Type: text/x-diff; name="voyager.patch", Size: 1439 bytes --]

Submitted by: Cedric Augonnet <cedric.augonnet@ens-lyon.org>
---
diff -urN a/arch/i386/mach-voyager/voyager_cat.c b/arch/i386/mach-voyager/voyager_cat.c
--- /home/gonnet/tmp/linux-2.6.22/arch/i386/mach-voyager/voyager_cat.c	2007-07-20 11:50:17.000000000 -0400
+++ linux-2.6.22/arch/i386/mach-voyager/voyager_cat.c	2007-07-22 11:24:34.000000000 -0400
@@ -682,7 +682,7 @@
 			outb(VOYAGER_CAT_END, CAT_CMD);
 			continue;
 		}
-		if(eprom_size > sizeof(eprom_buf)) {
+		if((unsigned)eprom_size > sizeof(eprom_buf)) {
 			printk("**WARNING**: Voyager insufficient size to read EPROM data, module 0x%x.  Need %d\n", i, eprom_size);
 			outb(VOYAGER_CAT_END, CAT_CMD);
 			continue;
@@ -752,7 +752,7 @@
 			outb(VOYAGER_CAT_END, CAT_CMD);
 			continue;
 		}
-		if(eprom_size > sizeof(eprom_buf)) {
+		if((unsigned)eprom_size > sizeof(eprom_buf)) {
 			printk("**WARNING**: Voyager insufficient size to read EPROM data, module 0x%x.  Need %d\n", i, eprom_size);
 			outb(VOYAGER_CAT_END, CAT_CMD);
 			continue;
diff -urN a/arch/i386/mach-voyager/voyager_thread.c b/arch/i386/mach-voyager/voyager_thread.c
--- /home/gonnet/tmp/linux-2.6.22/arch/i386/mach-voyager/voyager_thread.c	2007-07-20 11:50:17.000000000 -0400
+++ linux-2.6.22/arch/i386/mach-voyager/voyager_thread.c	2007-07-22 11:27:13.000000000 -0400
@@ -92,7 +92,7 @@
 	}
 }
 
-static int
+static void
 thread(void *unused)
 {
 	printk(KERN_NOTICE "Voyager starting monitor thread\n");

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: voyager_{thread,cat}.c compile warnings
  2007-07-22 22:49   ` Cédric Augonnet
@ 2007-07-22 23:39     ` James Bottomley
  2007-07-23  0:39       ` Cédric Augonnet
  0 siblings, 1 reply; 5+ messages in thread
From: James Bottomley @ 2007-07-22 23:39 UTC (permalink / raw)
  To: Cédric Augonnet
  Cc: Gabriel C, Linux Kernel Mailing List, J.E.J.Bottomley

On Sun, 2007-07-22 at 18:49 -0400, Cédric Augonnet wrote:
> iff -urN a/arch/i386/mach-voyager/voyager_cat.c
> b/arch/i386/mach-voyager/voyager_cat.c
> --- /home/gonnet/tmp/linux-2.6.22/arch/i386/mach-voyager/voyager_cat.c  2007-07-20 11:50:17.000000000 -0400
> +++ linux-2.6.22/arch/i386/mach-voyager/voyager_cat.c   2007-07-22
> 11:24:34.000000000 -0400
> @@ -682,7 +682,7 @@
>                         outb(VOYAGER_CAT_END, CAT_CMD);
>                         continue;
>                 }
> -               if(eprom_size > sizeof(eprom_buf)) {
> +               if((unsigned)eprom_size > sizeof(eprom_buf)) {

Actually, no.  If gcc can deduce that the comparison is always false
then I want it not to build the body of the if.  The only thing I don't
know how to do is to shut up the warning in this case.  What you've done
is make gcc pretend it doesn't know the if is always false.

>                         printk("**WARNING**: Voyager insufficient size
> to read EPROM data, module 0x%x.  Need %d\n", i, eprom_size);
>                         outb(VOYAGER_CAT_END, CAT_CMD);
>                         continue;
> @@ -752,7 +752,7 @@
>                         outb(VOYAGER_CAT_END, CAT_CMD);
>                         continue;
>                 }
> -               if(eprom_size > sizeof(eprom_buf)) {
> +               if((unsigned)eprom_size > sizeof(eprom_buf)) {
>                         printk("**WARNING**: Voyager insufficient size
> to read EPROM data, module 0x%x.  Need %d\n", i, eprom_size);
>                         outb(VOYAGER_CAT_END, CAT_CMD);
>                         continue;
> diff -urN a/arch/i386/mach-voyager/voyager_thread.c
> b/arch/i386/mach-voyager/voyager_thread.c
> --- /home/gonnet/tmp/linux-2.6.22/arch/i386/mach-voyager/voyager_thread.c       2007-07-20 11:50:17.000000000 -0400
> +++
> linux-2.6.22/arch/i386/mach-voyager/voyager_thread.c        2007-07-22
> 11:27:13.000000000 -0400
> @@ -92,7 +92,7 @@
>         }
>  }
>  
> -static int
> +static void
>  thread(void *unused)
>  {
>         printk(KERN_NOTICE "Voyager starting monitor thread\n");

You didn't actually compile this, did you?  Apparently the signature of
the kthread_run function changed from returning void to returning int.
Unfortunately the person who fixed this up forgot to add a return 0 at
the end of the voyager thread() function .. which is the correct fix.

James



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: voyager_{thread,cat}.c compile warnings
  2007-07-22 23:39     ` James Bottomley
@ 2007-07-23  0:39       ` Cédric Augonnet
  0 siblings, 0 replies; 5+ messages in thread
From: Cédric Augonnet @ 2007-07-23  0:39 UTC (permalink / raw)
  To: James Bottomley; +Cc: Gabriel C, Linux Kernel Mailing List, J.E.J.Bottomley

2007/7/22, James Bottomley <James.Bottomley@hansenpartnership.com>:
> On Sun, 2007-07-22 at 18:49 -0400, Cédric Augonnet wrote:
> > iff -urN a/arch/i386/mach-voyager/voyager_cat.c
> > b/arch/i386/mach-voyager/voyager_cat.c
> > --- /home/gonnet/tmp/linux-2.6.22/arch/i386/mach-voyager/voyager_cat.c  2007-07-20 11:50:17.000000000 -0400
> > +++ linux-2.6.22/arch/i386/mach-voyager/voyager_cat.c   2007-07-22
> > 11:24:34.000000000 -0400
> > @@ -682,7 +682,7 @@
> >                         outb(VOYAGER_CAT_END, CAT_CMD);
> >                         continue;
> >                 }
> > -               if(eprom_size > sizeof(eprom_buf)) {
> > +               if((unsigned)eprom_size > sizeof(eprom_buf)) {
>
> Actually, no.  If gcc can deduce that the comparison is always false
> then I want it not to build the body of the if.  The only thing I don't
> know how to do is to shut up the warning in this case.  What you've done
> is make gcc pretend it doesn't know the if is always false.
>
> >                         printk("**WARNING**: Voyager insufficient size
> > to read EPROM data, module 0x%x.  Need %d\n", i, eprom_size);
> >                         outb(VOYAGER_CAT_END, CAT_CMD);
> >                         continue;
> > @@ -752,7 +752,7 @@
> >                         outb(VOYAGER_CAT_END, CAT_CMD);
> >                         continue;
> >                 }
> > -               if(eprom_size > sizeof(eprom_buf)) {
> > +               if((unsigned)eprom_size > sizeof(eprom_buf)) {
> >                         printk("**WARNING**: Voyager insufficient size
> > to read EPROM data, module 0x%x.  Need %d\n", i, eprom_size);
> >                         outb(VOYAGER_CAT_END, CAT_CMD);
> >                         continue;
> > diff -urN a/arch/i386/mach-voyager/voyager_thread.c
> > b/arch/i386/mach-voyager/voyager_thread.c
> > --- /home/gonnet/tmp/linux-2.6.22/arch/i386/mach-voyager/voyager_thread.c       2007-07-20 11:50:17.000000000 -0400
> > +++
> > linux-2.6.22/arch/i386/mach-voyager/voyager_thread.c        2007-07-22
> > 11:27:13.000000000 -0400
> > @@ -92,7 +92,7 @@
> >         }
> >  }
> >
> > -static int
> > +static void
> >  thread(void *unused)
> >  {
> >         printk(KERN_NOTICE "Voyager starting monitor thread\n");
>
> You didn't actually compile this, did you?  Apparently the signature of
> the kthread_run function changed from returning void to returning int.
> Unfortunately the person who fixed this up forgot to add a return 0 at
> the end of the voyager thread() function .. which is the correct fix.

Arg i was caught by that one.

> James
>

Ouch indeed this quick'n'dirty patch was, let's call it a full mistake
:) sorry for that, it could indeed not be tested as i don't have the
hardware.

Still, is it safe to compare two variable with different types anyway ?

In http://lists.infradead.org/pipermail/linux-pcmcia/2004-March/000586.html
they also have the same issue, they just do
s/ foo > 0xffff / foo & ~0xffff /
should not it solve the problem as well ?

Sorry again for the first patch, next time i'll just shut up.

Regards,
Cédric

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-07-23  0:39 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-21 22:03 voyager_{thread,cat}.c compile warnings Gabriel C
2007-07-22 15:33 ` Cédric Augonnet
2007-07-22 22:49   ` Cédric Augonnet
2007-07-22 23:39     ` James Bottomley
2007-07-23  0:39       ` Cédric Augonnet

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox