Linux ATA/IDE development
 help / color / mirror / Atom feed
* [PATCH] stop gcc warning about uninitialized 'dev' in ata_scsi_scan_host
@ 2008-10-15 23:25 Alex Chiang
  2008-10-16  2:11 ` Tejun Heo
  0 siblings, 1 reply; 10+ messages in thread
From: Alex Chiang @ 2008-10-15 23:25 UTC (permalink / raw)
  To: jeff; +Cc: linux-ide, linux-kernel

Shuts up gcc-3.4.5-glibc-2.3.6 when it complains of:

drivers/ata/libata-scsi.c: In function `ata_scsi_scan_host':
drivers/ata/libata-scsi.c:3225: warning: 'dev' might be used
uninitialized in this function

Signed-off-by: Alex Chiang <achiang@hp.com>
---
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index 5d312dc..4e27c68 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -3222,7 +3222,7 @@ void ata_scsi_scan_host(struct ata_port *ap, int sync)
 	int tries = 5;
 	struct ata_device *last_failed_dev = NULL;
 	struct ata_link *link;
-	struct ata_device *dev;
+	struct ata_device *dev = NULL;
 
 	if (ap->flags & ATA_FLAG_DISABLED)
 		return;

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

* Re: [PATCH] stop gcc warning about uninitialized 'dev' in ata_scsi_scan_host
  2008-10-15 23:25 [PATCH] stop gcc warning about uninitialized 'dev' in ata_scsi_scan_host Alex Chiang
@ 2008-10-16  2:11 ` Tejun Heo
  2008-10-16  3:40   ` Alex Chiang
  0 siblings, 1 reply; 10+ messages in thread
From: Tejun Heo @ 2008-10-16  2:11 UTC (permalink / raw)
  To: Alex Chiang, jeff, linux-ide, linux-kernel

Alex Chiang wrote:
> Shuts up gcc-3.4.5-glibc-2.3.6 when it complains of:
> 
> drivers/ata/libata-scsi.c: In function `ata_scsi_scan_host':
> drivers/ata/libata-scsi.c:3225: warning: 'dev' might be used
> uninitialized in this function
> 
> Signed-off-by: Alex Chiang <achiang@hp.com>

Nacked-by: Tejun Heo <tj@kernel.org>

Some gcc versions complain about sata_via, others complain about
something else.  Some versions complain about some iterator usages while
not complaining about others, but none of those complaints is actually
wrong or dangerous.  I don't think adding = NULL whenever some version
of gcc complains is the right approach.

Thanks.

-- 
tejun

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

* Re: [PATCH] stop gcc warning about uninitialized 'dev' in ata_scsi_scan_host
  2008-10-16  2:11 ` Tejun Heo
@ 2008-10-16  3:40   ` Alex Chiang
  2008-10-16  3:54     ` Tejun Heo
  2008-10-16  6:16     ` Adrian Bunk
  0 siblings, 2 replies; 10+ messages in thread
From: Alex Chiang @ 2008-10-16  3:40 UTC (permalink / raw)
  To: Tejun Heo; +Cc: jeff, linux-ide, linux-kernel

* Tejun Heo <tj@kernel.org>:
> Alex Chiang wrote:
> > Shuts up gcc-3.4.5-glibc-2.3.6 when it complains of:
> > 
> > drivers/ata/libata-scsi.c: In function `ata_scsi_scan_host':
> > drivers/ata/libata-scsi.c:3225: warning: 'dev' might be used
> > uninitialized in this function
> > 
> > Signed-off-by: Alex Chiang <achiang@hp.com>
> 
> Nacked-by: Tejun Heo <tj@kernel.org>
> 
> Some gcc versions complain about sata_via, others complain
> about something else.  Some versions complain about some
> iterator usages while not complaining about others, but none of
> those complaints is actually wrong or dangerous.  I don't think
> adding = NULL whenever some version of gcc complains is the
> right approach.

Hm, ok.

I guess we don't want to sprinkle these around all over the place
just to solve cosmetic issues, which makes sense, but is there
some other approach we could take instead? Any suggestions? Or
just live with it?

/ac


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

* Re: [PATCH] stop gcc warning about uninitialized 'dev' in ata_scsi_scan_host
  2008-10-16  3:40   ` Alex Chiang
@ 2008-10-16  3:54     ` Tejun Heo
  2008-10-16  6:02       ` Elias Oltmanns
  2008-10-16  6:16     ` Adrian Bunk
  1 sibling, 1 reply; 10+ messages in thread
From: Tejun Heo @ 2008-10-16  3:54 UTC (permalink / raw)
  To: Alex Chiang, Tejun Heo, jeff, linux-ide, linux-kernel

Alex Chiang wrote:
> * Tejun Heo <tj@kernel.org>:
>> Alex Chiang wrote:
>>> Shuts up gcc-3.4.5-glibc-2.3.6 when it complains of:
>>>
>>> drivers/ata/libata-scsi.c: In function `ata_scsi_scan_host':
>>> drivers/ata/libata-scsi.c:3225: warning: 'dev' might be used
>>> uninitialized in this function
>>>
>>> Signed-off-by: Alex Chiang <achiang@hp.com>
>> Nacked-by: Tejun Heo <tj@kernel.org>
>>
>> Some gcc versions complain about sata_via, others complain
>> about something else.  Some versions complain about some
>> iterator usages while not complaining about others, but none of
>> those complaints is actually wrong or dangerous.  I don't think
>> adding = NULL whenever some version of gcc complains is the
>> right approach.
> 
> Hm, ok.
> 
> I guess we don't want to sprinkle these around all over the place
> just to solve cosmetic issues, which makes sense, but is there
> some other approach we could take instead? Any suggestions? Or
> just live with it?

I think the current policy is blaming gcc but I also added quite a few
bogus NULL initializations here and there and caught several bugs thanks
to those warnings.  We can think about adding an additional annotation
with leading double underbars which indicate that certain pointer
arguments to functions expect (or are okay with) pointers to
uninitialized variables which should be able to remove many of those
spurious warnings (on the caller side, the compiler can ignore the
warning and on the callee side the compiler can check whether it's being
dereferenced without being written to).  Does anyone know whether gcc
already has that type of annotation?

Thanks.

-- 
tejun

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

* Re: [PATCH] stop gcc warning about uninitialized 'dev' in ata_scsi_scan_host
  2008-10-16  3:54     ` Tejun Heo
@ 2008-10-16  6:02       ` Elias Oltmanns
  2008-10-16  6:08         ` Tejun Heo
  0 siblings, 1 reply; 10+ messages in thread
From: Elias Oltmanns @ 2008-10-16  6:02 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Alex Chiang, jeff, linux-ide, linux-kernel

Tejun Heo <tj@kernel.org> wrote:
> Alex Chiang wrote:
>> * Tejun Heo <tj@kernel.org>:
>
>>> Alex Chiang wrote:
>>>> Shuts up gcc-3.4.5-glibc-2.3.6 when it complains of:
>>>>
>>>> drivers/ata/libata-scsi.c: In function `ata_scsi_scan_host':
>>>> drivers/ata/libata-scsi.c:3225: warning: 'dev' might be used
>>>> uninitialized in this function
>>>>
>>>> Signed-off-by: Alex Chiang <achiang@hp.com>
>>> Nacked-by: Tejun Heo <tj@kernel.org>
>>>
>>> Some gcc versions complain about sata_via, others complain
>>> about something else.  Some versions complain about some
>>> iterator usages while not complaining about others, but none of
>>> those complaints is actually wrong or dangerous.  I don't think
>>> adding = NULL whenever some version of gcc complains is the
>>> right approach.
>> 
>> Hm, ok.
>> 
>> I guess we don't want to sprinkle these around all over the place
>> just to solve cosmetic issues, which makes sense, but is there
>> some other approach we could take instead? Any suggestions? Or
>> just live with it?
>
> I think the current policy is blaming gcc but I also added quite a few
> bogus NULL initializations here and there and caught several bugs thanks
> to those warnings.  We can think about adding an additional annotation
> with leading double underbars which indicate that certain pointer
> arguments to functions expect (or are okay with) pointers to
> uninitialized variables which should be able to remove many of those
> spurious warnings (on the caller side, the compiler can ignore the
> warning and on the callee side the compiler can check whether it's being
> dereferenced without being written to).  Does anyone know whether gcc
> already has that type of annotation?

Well, I don't know of this particular kind of annotation. However, I
don't quite see how that would solve the reported issue. Here, dev is a
local variable and the warning is generated due to the line

		if (dev != last_failed_dev) {

For this sort of thing we have:

	struct ata_device *uninitialized_var(dev);

Or is that precisely the thing you did *not* want?

Regards,

Elias

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

* Re: [PATCH] stop gcc warning about uninitialized 'dev' in ata_scsi_scan_host
  2008-10-16  6:02       ` Elias Oltmanns
@ 2008-10-16  6:08         ` Tejun Heo
  0 siblings, 0 replies; 10+ messages in thread
From: Tejun Heo @ 2008-10-16  6:08 UTC (permalink / raw)
  To: Elias Oltmanns; +Cc: Alex Chiang, jeff, linux-ide, linux-kernel

Elias Oltmanns wrote:
>> I think the current policy is blaming gcc but I also added quite a few
>> bogus NULL initializations here and there and caught several bugs thanks
>> to those warnings.  We can think about adding an additional annotation
>> with leading double underbars which indicate that certain pointer
>> arguments to functions expect (or are okay with) pointers to
>> uninitialized variables which should be able to remove many of those
>> spurious warnings (on the caller side, the compiler can ignore the
>> warning and on the callee side the compiler can check whether it's being
>> dereferenced without being written to).  Does anyone know whether gcc
>> already has that type of annotation?
> 
> Well, I don't know of this particular kind of annotation. However, I
> don't quite see how that would solve the reported issue.

I was thinking about the warning in sata_via.c and for such cases the
compiler doesn't have any other way of figuring out whether it's okay
or not (the sata_via case, the compiler can actually do as the callee
is in the same file but you know what I mean).

> Here, dev is a local variable and the warning is generated due to
> the line
> 
> 		if (dev != last_failed_dev) {
> 
> For this sort of thing we have:
> 
> 	struct ata_device *uninitialized_var(dev);

Ah.. thanks.

> Or is that precisely the thing you did *not* want?

I don't know.  Later versions of gcc doesn't issue warning because it
knows "if (!link)" always triggers if dev is not initialized.  I don't
think we should be adding those annotations if the current gen
compiler can already figure that out as it only decreases
debuggability when something actually gets broken there.

Thanks.

-- 
tejun

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

* Re: [PATCH] stop gcc warning about uninitialized 'dev' in ata_scsi_scan_host
  2008-10-16  3:40   ` Alex Chiang
  2008-10-16  3:54     ` Tejun Heo
@ 2008-10-16  6:16     ` Adrian Bunk
  2008-10-16 21:21       ` Alex Chiang
  2008-10-16 21:22       ` Alex Chiang
  1 sibling, 2 replies; 10+ messages in thread
From: Adrian Bunk @ 2008-10-16  6:16 UTC (permalink / raw)
  To: Alex Chiang, Tejun Heo, jeff, linux-ide, linux-kernel

On Wed, Oct 15, 2008 at 09:40:42PM -0600, Alex Chiang wrote:
> * Tejun Heo <tj@kernel.org>:
> > Alex Chiang wrote:
> > > Shuts up gcc-3.4.5-glibc-2.3.6 when it complains of:
> > > 
> > > drivers/ata/libata-scsi.c: In function `ata_scsi_scan_host':
> > > drivers/ata/libata-scsi.c:3225: warning: 'dev' might be used
> > > uninitialized in this function
> > > 
> > > Signed-off-by: Alex Chiang <achiang@hp.com>
> > 
> > Nacked-by: Tejun Heo <tj@kernel.org>
> > 
> > Some gcc versions complain about sata_via, others complain
> > about something else.  Some versions complain about some
> > iterator usages while not complaining about others, but none of
> > those complaints is actually wrong or dangerous.  I don't think
> > adding = NULL whenever some version of gcc complains is the
> > right approach.
> 
> Hm, ok.
> 
> I guess we don't want to sprinkle these around all over the place
> just to solve cosmetic issues, which makes sense, but is there
> some other approach we could take instead? Any suggestions? Or
> just live with it?

We have an annotation for these kinds of warnings in the kernel.

But we'll never get a warning-free compilation with all seven (sic) 
supported gcc release series.

A warning-free compilation with gcc 4.3 is worth some efforts, but 
cluttering our code to fix bogus warnings with older gcc versions
is not a good thing.

> /ac

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed


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

* Re: [PATCH] stop gcc warning about uninitialized 'dev' in ata_scsi_scan_host
  2008-10-16  6:16     ` Adrian Bunk
@ 2008-10-16 21:21       ` Alex Chiang
  2008-10-16 21:22       ` Alex Chiang
  1 sibling, 0 replies; 10+ messages in thread
From: Alex Chiang @ 2008-10-16 21:21 UTC (permalink / raw)
  To: Adrian Bunk; +Cc: Tejun Heo, jeff, linux-ide, linux-kernel

* Adrian Bunk <bunk@kernel.org>:
> On Wed, Oct 15, 2008 at 09:40:42PM -0600, Alex Chiang wrote:
> > * Tejun Heo <tj@kernel.org>:
> > > Alex Chiang wrote:
> > > > Shuts up gcc-3.4.5-glibc-2.3.6 when it complains of:
> > > > 
> > > > drivers/ata/libata-scsi.c: In function `ata_scsi_scan_host':
> > > > drivers/ata/libata-scsi.c:3225: warning: 'dev' might be used
> > > > uninitialized in this function
> > > > 
> > > > Signed-off-by: Alex Chiang <achiang@hp.com>
> > > 
> > > Nacked-by: Tejun Heo <tj@kernel.org>
> > > 
> > > Some gcc versions complain about sata_via, others complain
> > > about something else.  Some versions complain about some
> > > iterator usages while not complaining about others, but none of
> > > those complaints is actually wrong or dangerous.  I don't think
> > > adding = NULL whenever some version of gcc complains is the
> > > right approach.
> > 
> > Hm, ok.
> > 
> > I guess we don't want to sprinkle these around all over the place
> > just to solve cosmetic issues, which makes sense, but is there
> > some other approach we could take instead? Any suggestions? Or
> > just live with it?
> 
> We have an annotation for these kinds of warnings in the kernel.

What is the annotation?

> But we'll never get a warning-free compilation with all seven (sic) 
> supported gcc release series.
> 
> A warning-free compilation with gcc 4.3 is worth some efforts, but 
> cluttering our code to fix bogus warnings with older gcc versions
> is not a good thing.

Ok, I already agree with this point.

Thanks.

/ac


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

* Re: [PATCH] stop gcc warning about uninitialized 'dev' in ata_scsi_scan_host
  2008-10-16  6:16     ` Adrian Bunk
  2008-10-16 21:21       ` Alex Chiang
@ 2008-10-16 21:22       ` Alex Chiang
  2008-10-16 21:24         ` Randy.Dunlap
  1 sibling, 1 reply; 10+ messages in thread
From: Alex Chiang @ 2008-10-16 21:22 UTC (permalink / raw)
  To: Adrian Bunk; +Cc: Tejun Heo, jeff, linux-ide, linux-kernel

* Adrian Bunk <bunk@kernel.org>:
> On Wed, Oct 15, 2008 at 09:40:42PM -0600, Alex Chiang wrote:
> > * Tejun Heo <tj@kernel.org>:
> > > Alex Chiang wrote:
> > > > Shuts up gcc-3.4.5-glibc-2.3.6 when it complains of:
> > > > 
> > > > drivers/ata/libata-scsi.c: In function `ata_scsi_scan_host':
> > > > drivers/ata/libata-scsi.c:3225: warning: 'dev' might be used
> > > > uninitialized in this function
> > > > 
> > > > Signed-off-by: Alex Chiang <achiang@hp.com>
> > > 
> > > Nacked-by: Tejun Heo <tj@kernel.org>
> > > 
> > > Some gcc versions complain about sata_via, others complain
> > > about something else.  Some versions complain about some
> > > iterator usages while not complaining about others, but none of
> > > those complaints is actually wrong or dangerous.  I don't think
> > > adding = NULL whenever some version of gcc complains is the
> > > right approach.
> > 
> > Hm, ok.
> > 
> > I guess we don't want to sprinkle these around all over the place
> > just to solve cosmetic issues, which makes sense, but is there
> > some other approach we could take instead? Any suggestions? Or
> > just live with it?
> 
> We have an annotation for these kinds of warnings in the kernel.

Oh, is it this?

from linux/compiler-gcc3.h
#define uninitialized_var(x) x = x

/ac


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

* Re: [PATCH] stop gcc warning about uninitialized 'dev' in ata_scsi_scan_host
  2008-10-16 21:22       ` Alex Chiang
@ 2008-10-16 21:24         ` Randy.Dunlap
  0 siblings, 0 replies; 10+ messages in thread
From: Randy.Dunlap @ 2008-10-16 21:24 UTC (permalink / raw)
  To: Alex Chiang; +Cc: Adrian Bunk, Tejun Heo, jeff, linux-ide, linux-kernel

> > > I guess we don't want to sprinkle these around all over the place
> > > just to solve cosmetic issues, which makes sense, but is there
> > > some other approach we could take instead? Any suggestions? Or
> > > just live with it?
> > 
> > We have an annotation for these kinds of warnings in the kernel.
> 
> Oh, is it this?
> 
> from linux/compiler-gcc3.h
> #define uninitialized_var(x) x = x

Yes, you got it.

-- 
~Randy

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

end of thread, other threads:[~2008-10-16 21:24 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-15 23:25 [PATCH] stop gcc warning about uninitialized 'dev' in ata_scsi_scan_host Alex Chiang
2008-10-16  2:11 ` Tejun Heo
2008-10-16  3:40   ` Alex Chiang
2008-10-16  3:54     ` Tejun Heo
2008-10-16  6:02       ` Elias Oltmanns
2008-10-16  6:08         ` Tejun Heo
2008-10-16  6:16     ` Adrian Bunk
2008-10-16 21:21       ` Alex Chiang
2008-10-16 21:22       ` Alex Chiang
2008-10-16 21:24         ` Randy.Dunlap

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