On Thu, 8 Mar 2007, Blaisorblade wrote:
>
> Code giving one of these warnings (kernel tree 2.6.20.1), other warnings are
> like this. I.e.:
> ret = something()
> is seen as redeclaration.
No. Sparse is actually correct, but you didn't notice that there is
*another* "ret" there.
See how TestClearPageWriteback() is declared in <linux/page-flags.h>. THAT
is the "ret" that shadows an earlier one..
(And no, a macro should not use a common name like that - imagine if you
call it with an argument that really is "struct page *ret", and thing what
happens to the TestClearPageWritepage expansion..)
So sparse in this case does seem to be pointing out a potentially
dangerous situation, where a macro declares a local variable with the same
name as a user of that macro.
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html