* Sparse 0.2 warnings from {asm,net}/checksum.h
@ 2007-01-01 14:23 Tilman Schmidt
2007-01-01 19:10 ` Dave Jones
0 siblings, 1 reply; 3+ messages in thread
From: Tilman Schmidt @ 2007-01-01 14:23 UTC (permalink / raw)
To: LKML
[-- Attachment #1: Type: text/plain, Size: 806 bytes --]
With sparse 0.2, my previously sparse-clean driver generates the
following warnings:
include/asm/checksum.h:182:6: warning: symbol 'sum' shadows an earlier one
include/asm/checksum.h:178:28: originally declared here
include/net/checksum.h:33:6: warning: symbol 'sum' shadows an earlier one
include/net/checksum.h:31:27: originally declared here
Architecture is i386. The lines referred to are in the functions
csum_and_copy_to_user() and csum_and_copy_from_user(), but I
don't see why sparse would emit such a warning for that code.
Any chance of getting rid of these?
Thanks
Tilman
--
Tilman Schmidt E-Mail: tilman@imap.cc
Bonn, Germany
Diese Nachricht besteht zu 100% aus wiederverwerteten Bits.
Ungeöffnet mindestens haltbar bis: (siehe Rückseite)
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 253 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Sparse 0.2 warnings from {asm,net}/checksum.h
2007-01-01 14:23 Sparse 0.2 warnings from {asm,net}/checksum.h Tilman Schmidt
@ 2007-01-01 19:10 ` Dave Jones
2007-01-03 2:24 ` [PATCH] fix sparse " Tilman Schmidt
0 siblings, 1 reply; 3+ messages in thread
From: Dave Jones @ 2007-01-01 19:10 UTC (permalink / raw)
To: Tilman Schmidt; +Cc: LKML
On Mon, Jan 01, 2007 at 03:23:45PM +0100, Tilman Schmidt wrote:
> With sparse 0.2, my previously sparse-clean driver generates the
> following warnings:
>
> include/asm/checksum.h:182:6: warning: symbol 'sum' shadows an earlier one
> include/asm/checksum.h:178:28: originally declared here
> include/net/checksum.h:33:6: warning: symbol 'sum' shadows an earlier one
> include/net/checksum.h:31:27: originally declared here
>
> Architecture is i386. The lines referred to are in the functions
> csum_and_copy_to_user() and csum_and_copy_from_user(), but I
> don't see why sparse would emit such a warning for that code.
It's complaining about the 'sum' declaration in __range_not_ok
used by access_ok(), which shadows the variable declared in
the prototype of the functions you mention.
Dave
--
http://www.codemonkey.org.uk
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] fix sparse warnings from {asm,net}/checksum.h
2007-01-01 19:10 ` Dave Jones
@ 2007-01-03 2:24 ` Tilman Schmidt
0 siblings, 0 replies; 3+ messages in thread
From: Tilman Schmidt @ 2007-01-03 2:24 UTC (permalink / raw)
To: Dave Jones, Andrew Morton, linux-kernel
Rename the variable "sum" in the __range_ok macros to avoid name
collisions causing lots of "symbol shadows an earlier one" warnings
by sparse.
Signed-off-by: Tilman Schmidt <tilman@imap.cc>
---
asm-arm/uaccess.h | 4 ++--
asm-arm26/uaccess-asm.h | 4 ++--
asm-i386/uaccess.h | 4 ++--
asm-m32r/uaccess.h | 4 ++--
asm-x86_64/uaccess.h | 4 ++--
5 files changed, 10 insertions(+), 10 deletions(-)
diff -pru linux-2.6.20-rc3-work/include/asm-arm/uaccess.h linux-2.6.20-rc3-new/include/asm-arm/uaccess.h
--- linux-2.6.20-rc3-work/include/asm-arm/uaccess.h 2006-11-29 22:57:37.000000000 +0100
+++ linux-2.6.20-rc3-new/include/asm-arm/uaccess.h 2007-01-02 00:23:34.000000000 +0100
@@ -76,10 +76,10 @@ static inline void set_fs(mm_segment_t f
/* We use 33-bit arithmetic here... */
#define __range_ok(addr,size) ({ \
- unsigned long flag, sum; \
+ unsigned long flag, roksum; \
__chk_user_ptr(addr); \
__asm__("adds %1, %2, %3; sbcccs %1, %1, %0; movcc %0, #0" \
- : "=&r" (flag), "=&r" (sum) \
+ : "=&r" (flag), "=&r" (roksum) \
: "r" (addr), "Ir" (size), "0" (current_thread_info()->addr_limit) \
: "cc"); \
flag; })
diff -pru linux-2.6.20-rc3-work/include/asm-arm26/uaccess-asm.h linux-2.6.20-rc3-new/include/asm-arm26/uaccess-asm.h
--- linux-2.6.20-rc3-work/include/asm-arm26/uaccess-asm.h 2006-11-29 22:57:37.000000000 +0100
+++ linux-2.6.20-rc3-new/include/asm-arm26/uaccess-asm.h 2007-01-02 00:23:50.000000000 +0100
@@ -34,9 +34,9 @@ static inline void set_fs (mm_segment_t
}
#define __range_ok(addr,size) ({ \
- unsigned long flag, sum; \
+ unsigned long flag, roksum; \
__asm__ __volatile__("subs %1, %0, %3; cmpcs %1, %2; movcs %0, #0" \
- : "=&r" (flag), "=&r" (sum) \
+ : "=&r" (flag), "=&r" (roksum) \
: "r" (addr), "Ir" (size), "0" (current_thread_info()->addr_limit) \
: "cc"); \
flag; })
diff -pru linux-2.6.20-rc3-work/include/asm-i386/uaccess.h linux-2.6.20-rc3-new/include/asm-i386/uaccess.h
--- linux-2.6.20-rc3-work/include/asm-i386/uaccess.h 2006-11-29 22:57:37.000000000 +0100
+++ linux-2.6.20-rc3-new/include/asm-i386/uaccess.h 2007-01-02 00:24:04.000000000 +0100
@@ -54,10 +54,10 @@ extern struct movsl_mask {
* This needs 33-bit arithmetic. We have a carry...
*/
#define __range_ok(addr,size) ({ \
- unsigned long flag,sum; \
+ unsigned long flag,roksum; \
__chk_user_ptr(addr); \
asm("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0" \
- :"=&r" (flag), "=r" (sum) \
+ :"=&r" (flag), "=r" (roksum) \
:"1" (addr),"g" ((int)(size)),"rm" (current_thread_info()->addr_limit.seg)); \
flag; })
diff -pru linux-2.6.20-rc3-work/include/asm-m32r/uaccess.h linux-2.6.20-rc3-new/include/asm-m32r/uaccess.h
--- linux-2.6.20-rc3-work/include/asm-m32r/uaccess.h 2006-11-29 22:57:37.000000000 +0100
+++ linux-2.6.20-rc3-new/include/asm-m32r/uaccess.h 2007-01-02 00:24:25.000000000 +0100
@@ -68,7 +68,7 @@ static inline void set_fs(mm_segment_t s
* This needs 33-bit arithmetic. We have a carry...
*/
#define __range_ok(addr,size) ({ \
- unsigned long flag, sum; \
+ unsigned long flag, roksum; \
__chk_user_ptr(addr); \
asm ( \
" cmpu %1, %1 ; clear cbit\n" \
@@ -76,7 +76,7 @@ static inline void set_fs(mm_segment_t s
" subx %0, %0\n" \
" cmpu %4, %1\n" \
" subx %0, %5\n" \
- : "=&r" (flag), "=r" (sum) \
+ : "=&r" (flag), "=r" (roksum) \
: "1" (addr), "r" ((int)(size)), \
"r" (current_thread_info()->addr_limit.seg), "r" (0) \
: "cbit" ); \
diff -pru linux-2.6.20-rc3-work/include/asm-x86_64/uaccess.h linux-2.6.20-rc3-new/include/asm-x86_64/uaccess.h
--- linux-2.6.20-rc3-work/include/asm-x86_64/uaccess.h 2007-01-01 21:14:56.000000000 +0100
+++ linux-2.6.20-rc3-new/include/asm-x86_64/uaccess.h 2007-01-02 00:25:05.000000000 +0100
@@ -37,11 +37,11 @@
* Uhhuh, this needs 65-bit arithmetic. We have a carry..
*/
#define __range_not_ok(addr,size) ({ \
- unsigned long flag,sum; \
+ unsigned long flag,roksum; \
__chk_user_ptr(addr); \
asm("# range_ok\n\r" \
"addq %3,%1 ; sbbq %0,%0 ; cmpq %1,%4 ; sbbq $0,%0" \
- :"=&r" (flag), "=r" (sum) \
+ :"=&r" (flag), "=r" (roksum) \
:"1" (addr),"g" ((long)(size)),"g" (current_thread_info()->addr_limit.seg)); \
flag; })
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2007-01-03 2:25 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-01-01 14:23 Sparse 0.2 warnings from {asm,net}/checksum.h Tilman Schmidt
2007-01-01 19:10 ` Dave Jones
2007-01-03 2:24 ` [PATCH] fix sparse " Tilman Schmidt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox