Re: [PATCH] stop gcc warning about uninitialized 'dev' in ata_scsi_scan_host

From: Tejun Heo
Date: Thu Oct 16 2008 - 02:12:15 EST

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.


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at