From: This patch kills tons of gcc4 warnings: pointer targets in passing argument 2 of 'csum_and_copy_from_user' differ in signedness Signed-off-by: Andrew Morton --- 25-akpm/arch/ia64/lib/csum_partial_copy.c | 11 ++++++----- 25-akpm/arch/m32r/lib/csum_partial_copy.c | 7 +++---- 25-akpm/arch/m68k/lib/checksum.c | 6 +++--- 25-akpm/arch/m68knommu/lib/checksum.c | 5 +++-- 25-akpm/arch/parisc/lib/checksum.c | 4 ++-- 25-akpm/arch/sh64/lib/c-checksum.c | 8 ++++---- 25-akpm/arch/um/include/sysdep-i386/checksum.h | 20 ++++++++++---------- 25-akpm/arch/um/kernel/checksum.c | 12 ++++++------ 25-akpm/arch/v850/lib/checksum.c | 4 ++-- 25-akpm/arch/x86_64/lib/csum-wrappers.c | 6 +++--- 25-akpm/include/asm-i386/checksum.h | 12 ++++++------ 25-akpm/include/asm-mips/checksum.h | 10 +++++----- 25-akpm/include/asm-parisc/checksum.h | 10 ++++++---- 25-akpm/include/asm-sh/checksum.h | 12 ++++++------ 25-akpm/include/asm-sparc/checksum.h | 8 ++++---- 25-akpm/include/asm-sparc64/checksum.h | 12 +++++++----- 25-akpm/include/asm-x86_64/checksum.h | 8 ++++---- 25-akpm/include/net/checksum.h | 4 ++-- 18 files changed, 82 insertions(+), 77 deletions(-) diff -puN arch/ia64/lib/csum_partial_copy.c~csum_and_copy_from_user-gcc4-warning-fixes arch/ia64/lib/csum_partial_copy.c --- 25/arch/ia64/lib/csum_partial_copy.c~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.817505328 -0800 +++ 25-akpm/arch/ia64/lib/csum_partial_copy.c 2005-01-10 15:46:05.844501224 -0800 @@ -105,8 +105,8 @@ out: extern unsigned long do_csum(const unsigned char *, long); static unsigned int -do_csum_partial_copy_from_user (const char __user *src, char *dst, int len, - unsigned int psum, int *errp) +do_csum_partial_copy_from_user (const unsigned char __user *src, unsigned char *dst, + int len, unsigned int psum, int *errp) { unsigned long result; @@ -129,8 +129,8 @@ do_csum_partial_copy_from_user (const ch } unsigned int -csum_partial_copy_from_user (const char __user *src, char *dst, int len, - unsigned int sum, int *errp) +csum_partial_copy_from_user (const unsigned char __user *src, unsigned char *dst, + int len, unsigned int sum, int *errp) { if (!access_ok(VERIFY_READ, src, len)) { *errp = -EFAULT; @@ -142,7 +142,8 @@ csum_partial_copy_from_user (const char } unsigned int -csum_partial_copy_nocheck(const char __user *src, char *dst, int len, unsigned int sum) +csum_partial_copy_nocheck(const unsigned char __user *src, unsigned char *dst, + int len, unsigned int sum) { return do_csum_partial_copy_from_user(src, dst, len, sum, NULL); } diff -puN arch/m32r/lib/csum_partial_copy.c~csum_and_copy_from_user-gcc4-warning-fixes arch/m32r/lib/csum_partial_copy.c --- 25/arch/m32r/lib/csum_partial_copy.c~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.819505024 -0800 +++ 25-akpm/arch/m32r/lib/csum_partial_copy.c 2005-01-10 15:46:05.845501072 -0800 @@ -27,7 +27,7 @@ /* * Copy while checksumming, otherwise like csum_partial */ -unsigned int csum_partial_copy_nocheck (const char *src, char *dst, +unsigned int csum_partial_copy_nocheck (const unsigned char *src, unsigned char *dst, int len, unsigned int sum) { sum = csum_partial(src, len, sum); @@ -41,9 +41,8 @@ EXPORT_SYMBOL(csum_partial_copy_nocheck) * Copy from userspace and compute checksum. If we catch an exception * then zero the rest of the buffer. */ -unsigned int csum_partial_copy_from_user (const char __user *src, char *dst, - int len, unsigned int sum, - int *err_ptr) +unsigned int csum_partial_copy_from_user (const unsigned char __user *src, unsigned char *dst, + int len, unsigned int sum, int *err_ptr) { int missing; diff -puN arch/m68k/lib/checksum.c~csum_and_copy_from_user-gcc4-warning-fixes arch/m68k/lib/checksum.c --- 25/arch/m68k/lib/checksum.c~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.820504872 -0800 +++ 25-akpm/arch/m68k/lib/checksum.c 2005-01-10 15:46:05.845501072 -0800 @@ -134,8 +134,8 @@ EXPORT_SYMBOL(csum_partial); */ unsigned int -csum_partial_copy_from_user(const char *src, char *dst, int len, - int sum, int *csum_err) +csum_partial_copy_from_user(const unsigned char *src, unsigned char *dst, + int len, int sum, int *csum_err) { /* * GCC doesn't like more than 10 operands for the asm @@ -326,7 +326,7 @@ csum_partial_copy_from_user(const char * */ unsigned int -csum_partial_copy_nocheck(const char *src, char *dst, int len, int sum) +csum_partial_copy_nocheck(const unsigned char *src, unsigned char *dst, int len, int sum) { unsigned long tmp1, tmp2; __asm__("movel %2,%4\n\t" diff -puN arch/m68knommu/lib/checksum.c~csum_and_copy_from_user-gcc4-warning-fixes arch/m68knommu/lib/checksum.c --- 25/arch/m68knommu/lib/checksum.c~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.821504720 -0800 +++ 25-akpm/arch/m68knommu/lib/checksum.c 2005-01-10 15:46:05.846500920 -0800 @@ -140,7 +140,8 @@ unsigned short ip_compute_csum(const uns */ unsigned int -csum_partial_copy_from_user(const char *src, char *dst, int len, int sum, int *csum_err) +csum_partial_copy_from_user(const unsigned char *src, unsigned char *dst, + int len, int sum, int *csum_err) { if (csum_err) *csum_err = 0; memcpy(dst, src, len); @@ -152,7 +153,7 @@ csum_partial_copy_from_user(const char * */ unsigned int -csum_partial_copy(const char *src, char *dst, int len, int sum) +csum_partial_copy(const unsigned char *src, unsigned char *dst, int len, int sum) { memcpy(dst, src, len); return csum_partial(dst, len, sum); diff -puN arch/parisc/lib/checksum.c~csum_and_copy_from_user-gcc4-warning-fixes arch/parisc/lib/checksum.c --- 25/arch/parisc/lib/checksum.c~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.823504416 -0800 +++ 25-akpm/arch/parisc/lib/checksum.c 2005-01-10 15:46:05.846500920 -0800 @@ -113,7 +113,7 @@ EXPORT_SYMBOL(csum_partial); /* * copy while checksumming, otherwise like csum_partial */ -unsigned int csum_partial_copy_nocheck(const char *src, char *dst, +unsigned int csum_partial_copy_nocheck(const unsigned char *src, unsigned char *dst, int len, unsigned int sum) { /* @@ -131,7 +131,7 @@ EXPORT_SYMBOL(csum_partial_copy_nocheck) * Copy from userspace and compute checksum. If we catch an exception * then zero the rest of the buffer. */ -unsigned int csum_partial_copy_from_user (const char *src, char *dst, +unsigned int csum_partial_copy_from_user (const unsigned char *src, unsigned char *dst, int len, unsigned int sum, int *err_ptr) { diff -puN arch/sh64/lib/c-checksum.c~csum_and_copy_from_user-gcc4-warning-fixes arch/sh64/lib/c-checksum.c --- 25/arch/sh64/lib/c-checksum.c~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.824504264 -0800 +++ 25-akpm/arch/sh64/lib/c-checksum.c 2005-01-10 15:46:05.847500768 -0800 @@ -136,7 +136,7 @@ unsigned int csum_partial(const unsigned /* Copy while checksumming, otherwise like csum_partial. */ unsigned int -csum_partial_copy(const char *src, char *dst, int len, unsigned int sum) +csum_partial_copy(const unsigned char *src, unsigned char *dst, int len, unsigned int sum) { sum = csum_partial(src, len, sum); memcpy(dst, src, len); @@ -147,7 +147,7 @@ csum_partial_copy(const char *src, char /* Copy from userspace and compute checksum. If we catch an exception then zero the rest of the buffer. */ unsigned int -csum_partial_copy_from_user(const char *src, char *dst, int len, +csum_partial_copy_from_user(const unsigned char *src, unsigned char *dst, int len, unsigned int sum, int *err_ptr) { int missing; @@ -168,7 +168,7 @@ csum_partial_copy_from_user(const char * /* Copy to userspace and compute checksum. */ unsigned int -csum_partial_copy_to_user(const char *src, char *dst, int len, +csum_partial_copy_to_user(const unsigned char *src, unsigned char *dst, int len, unsigned int sum, int *err_ptr) { sum = csum_partial(src, len, sum); @@ -221,7 +221,7 @@ unsigned int csum_tcpudp_nofold(unsigned // Post SIM: unsigned int -csum_partial_copy_nocheck(const char *src, char *dst, int len, unsigned int sum) +csum_partial_copy_nocheck(const unsigned char *src, unsigned char *dst, int len, unsigned int sum) { // unsigned dummy; pr_debug("csum_partial_copy_nocheck src %p dst %p len %d\n", src, dst, diff -puN arch/um/include/sysdep-i386/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes arch/um/include/sysdep-i386/checksum.h --- 25/arch/um/include/sysdep-i386/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.826503960 -0800 +++ 25-akpm/arch/um/include/sysdep-i386/checksum.h 2005-01-10 15:46:05.848500616 -0800 @@ -31,10 +31,10 @@ unsigned int csum_partial(const unsigned * better 64-bit) boundary */ -unsigned int csum_partial_copy_to(const char *src, char *dst, int len, - int sum, int *err_ptr); -unsigned int csum_partial_copy_from(const char *src, char *dst, int len, - int sum, int *err_ptr); +unsigned int csum_partial_copy_to(const unsigned char *src, unsigned char *dst, + int len, int sum, int *err_ptr); +unsigned int csum_partial_copy_from(const unsigned char *src, unsigned char *dst, + int len, int sum, int *err_ptr); /* * Note: when you get a NULL pointer exception here this means someone @@ -45,7 +45,7 @@ unsigned int csum_partial_copy_from(cons */ static __inline__ -unsigned int csum_partial_copy_nocheck(const char *src, char *dst, +unsigned int csum_partial_copy_nocheck(const unsigned char *src, unsigned char *dst, int len, int sum) { memcpy(dst, src, len); @@ -53,7 +53,7 @@ unsigned int csum_partial_copy_nocheck(c } static __inline__ -unsigned int csum_partial_copy_from_user(const char *src, char *dst, +unsigned int csum_partial_copy_from_user(const unsigned char *src, unsigned char *dst, int len, int sum, int *err_ptr) { return csum_partial_copy_from(src, dst, len, sum, err_ptr); @@ -67,7 +67,7 @@ unsigned int csum_partial_copy_from_user */ #define csum_partial_copy_fromuser csum_partial_copy_from_user -unsigned int csum_partial_copy( const char *src, char *dst, int len, int sum); +unsigned int csum_partial_copy(const unsigned char *src, unsigned char *dst, int len, int sum); /* * This is a version of ip_compute_csum() optimized for IP headers, @@ -192,9 +192,9 @@ static __inline__ unsigned short int csu * Copy and checksum to user */ #define HAVE_CSUM_COPY_USER -static __inline__ unsigned int csum_and_copy_to_user(const char *src, - char *dst, int len, - int sum, int *err_ptr) +static __inline__ unsigned int csum_and_copy_to_user(const unsigned char *src, + unsigned char *dst, + int len, int sum, int *err_ptr) { if (access_ok(VERIFY_WRITE, dst, len)) return(csum_partial_copy_to(src, dst, len, sum, err_ptr)); diff -puN arch/um/kernel/checksum.c~csum_and_copy_from_user-gcc4-warning-fixes arch/um/kernel/checksum.c --- 25/arch/um/kernel/checksum.c~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.827503808 -0800 +++ 25-akpm/arch/um/kernel/checksum.c 2005-01-10 15:46:05.848500616 -0800 @@ -2,17 +2,17 @@ #include "linux/errno.h" #include "linux/module.h" -unsigned int arch_csum_partial(const char *buff, int len, int sum); +unsigned int arch_csum_partial(const unsigned char *buff, int len, int sum); -unsigned int csum_partial(char *buff, int len, int sum) +unsigned int csum_partial(unsigned char *buff, int len, int sum) { return arch_csum_partial(buff, len, sum); } EXPORT_SYMBOL(csum_partial); -unsigned int csum_partial_copy_to(const char *src, char __user *dst, int len, - int sum, int *err_ptr) +unsigned int csum_partial_copy_to(const unsigned char *src, char __user *dst, + int len, int sum, int *err_ptr) { if(copy_to_user(dst, src, len)){ *err_ptr = -EFAULT; @@ -22,8 +22,8 @@ unsigned int csum_partial_copy_to(const return(arch_csum_partial(src, len, sum)); } -unsigned int csum_partial_copy_from(const char __user *src, char *dst, int len, - int sum, int *err_ptr) +unsigned int csum_partial_copy_from(const unsigned char __user *src, char *dst, + int len, int sum, int *err_ptr) { if(copy_from_user(dst, src, len)){ *err_ptr = -EFAULT; diff -puN arch/v850/lib/checksum.c~csum_and_copy_from_user-gcc4-warning-fixes arch/v850/lib/checksum.c --- 25/arch/v850/lib/checksum.c~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.829503504 -0800 +++ 25-akpm/arch/v850/lib/checksum.c 2005-01-10 15:46:05.849500464 -0800 @@ -121,7 +121,7 @@ EXPORT_SYMBOL(csum_partial); /* * copy while checksumming, otherwise like csum_partial */ -unsigned int csum_partial_copy(const char *src, char *dst, +unsigned int csum_partial_copy(const unsigned char *src, unsigned char *dst, int len, unsigned int sum) { /* @@ -138,7 +138,7 @@ unsigned int csum_partial_copy(const cha * Copy from userspace and compute checksum. If we catch an exception * then zero the rest of the buffer. */ -unsigned int csum_partial_copy_from_user (const char *src, char *dst, +unsigned int csum_partial_copy_from_user (const unsigned char *src, unsigned char *dst, int len, unsigned int sum, int *err_ptr) { diff -puN arch/x86_64/lib/csum-wrappers.c~csum_and_copy_from_user-gcc4-warning-fixes arch/x86_64/lib/csum-wrappers.c --- 25/arch/x86_64/lib/csum-wrappers.c~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.830503352 -0800 +++ 25-akpm/arch/x86_64/lib/csum-wrappers.c 2005-01-10 15:46:05.849500464 -0800 @@ -19,7 +19,7 @@ * src and dst are best aligned to 64bits. */ unsigned int -csum_partial_copy_from_user(const char __user *src, char *dst, +csum_partial_copy_from_user(const unsigned char __user *src, unsigned char *dst, int len, unsigned int isum, int *errp) { might_sleep(); @@ -67,7 +67,7 @@ EXPORT_SYMBOL(csum_partial_copy_from_use * src and dst are best aligned to 64bits. */ unsigned int -csum_partial_copy_to_user(const char *src, char __user *dst, +csum_partial_copy_to_user(unsigned const char *src, unsigned char __user *dst, int len, unsigned int isum, int *errp) { might_sleep(); @@ -105,7 +105,7 @@ EXPORT_SYMBOL(csum_partial_copy_to_user) * Returns an 32bit unfolded checksum of the buffer. */ unsigned int -csum_partial_copy_nocheck(const char *src, char *dst, int len, unsigned int sum) +csum_partial_copy_nocheck(const unsigned char *src, unsigned char *dst, int len, unsigned int sum) { return csum_partial_copy_generic(src,dst,len,sum,NULL,NULL); } diff -puN include/asm-i386/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes include/asm-i386/checksum.h --- 25/include/asm-i386/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.832503048 -0800 +++ 25-akpm/include/asm-i386/checksum.h 2005-01-10 15:46:05.850500312 -0800 @@ -25,8 +25,8 @@ asmlinkage unsigned int csum_partial(con * better 64-bit) boundary */ -asmlinkage unsigned int csum_partial_copy_generic( const char *src, char *dst, int len, int sum, - int *src_err_ptr, int *dst_err_ptr); +asmlinkage unsigned int csum_partial_copy_generic(const unsigned char *src, unsigned char *dst, + int len, int sum, int *src_err_ptr, int *dst_err_ptr); /* * Note: when you get a NULL pointer exception here this means someone @@ -36,14 +36,14 @@ asmlinkage unsigned int csum_partial_cop * verify_area(). */ static __inline__ -unsigned int csum_partial_copy_nocheck ( const char *src, char *dst, +unsigned int csum_partial_copy_nocheck (const unsigned char *src, unsigned char *dst, int len, int sum) { return csum_partial_copy_generic ( src, dst, len, sum, NULL, NULL); } static __inline__ -unsigned int csum_partial_copy_from_user(const char __user *src, char *dst, +unsigned int csum_partial_copy_from_user(const unsigned char __user *src, unsigned char *dst, int len, int sum, int *err_ptr) { might_sleep(); @@ -174,8 +174,8 @@ static __inline__ unsigned short int csu * Copy and checksum to user */ #define HAVE_CSUM_COPY_USER -static __inline__ unsigned int csum_and_copy_to_user(const char *src, - char __user *dst, +static __inline__ unsigned int csum_and_copy_to_user(const unsigned char *src, + unsigned char __user *dst, int len, int sum, int *err_ptr) { diff -puN include/asm-mips/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes include/asm-mips/checksum.h --- 25/include/asm-mips/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.833502896 -0800 +++ 25-akpm/include/asm-mips/checksum.h 2005-01-10 15:46:05.851500160 -0800 @@ -34,15 +34,15 @@ unsigned int csum_partial(const unsigned * this is a new version of the above that records errors it finds in *errp, * but continues and zeros the rest of the buffer. */ -unsigned int csum_partial_copy_from_user(const char *src, char *dst, int len, +unsigned int csum_partial_copy_from_user(const unsigned char *src, unsigned char *dst, int len, unsigned int sum, int *errp); /* * Copy and checksum to user */ #define HAVE_CSUM_COPY_USER -static inline unsigned int csum_and_copy_to_user (const char *src, - char __user *dst, +static inline unsigned int csum_and_copy_to_user (const unsigned char *src, + unsigned char __user *dst, int len, int sum, int *err_ptr) { @@ -61,8 +61,8 @@ static inline unsigned int csum_and_copy * the same as csum_partial, but copies from user space (but on MIPS * we have just one address space, so this is identical to the above) */ -unsigned int csum_partial_copy_nocheck(const char *src, char *dst, int len, - unsigned int sum); +unsigned int csum_partial_copy_nocheck(const unsigned char *src, unsigned char *dst, + int len, unsigned int sum); /* * Fold a partial checksum without adding pseudo headers diff -puN include/asm-parisc/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes include/asm-parisc/checksum.h --- 25/include/asm-parisc/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.834502744 -0800 +++ 25-akpm/include/asm-parisc/checksum.h 2005-01-10 15:46:05.851500160 -0800 @@ -23,13 +23,15 @@ extern unsigned int csum_partial(const u * Here even more important to align src and dst on a 32-bit (or even * better 64-bit) boundary */ -extern unsigned int csum_partial_copy_nocheck(const char *, char *, int, unsigned int); +extern unsigned int csum_partial_copy_nocheck(const unsigned char *, unsigned char *, + int, unsigned int); /* * this is a new version of the above that records errors it finds in *errp, * but continues and zeros the rest of the buffer. */ -extern unsigned int csum_partial_copy_from_user(const char *src, char *dst, int len, unsigned int sum, int *errp); +extern unsigned int csum_partial_copy_from_user(const unsigned char *src, unsigned char *dst, + int len, unsigned int sum, int *errp); /* * Optimized for IP headers, which always checksum on 4 octet boundaries. @@ -191,8 +193,8 @@ static __inline__ unsigned short int csu * Copy and checksum to user */ #define HAVE_CSUM_COPY_USER -static __inline__ unsigned int csum_and_copy_to_user (const char *src, - char __user *dst, +static __inline__ unsigned int csum_and_copy_to_user (const unsigned char *src, + unsigned char __user *dst, int len, int sum, int *err_ptr) { diff -puN include/asm-sh/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes include/asm-sh/checksum.h --- 25/include/asm-sh/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.836502440 -0800 +++ 25-akpm/include/asm-sh/checksum.h 2005-01-10 15:46:05.852500008 -0800 @@ -34,8 +34,8 @@ asmlinkage unsigned int csum_partial(con * better 64-bit) boundary */ -asmlinkage unsigned int csum_partial_copy_generic( const char *src, char *dst, int len, int sum, - int *src_err_ptr, int *dst_err_ptr); +asmlinkage unsigned int csum_partial_copy_generic(const unsigned char *src, unsigned char *dst, + int len, int sum, int *src_err_ptr, int *dst_err_ptr); /* * Note: when you get a NULL pointer exception here this means someone @@ -45,14 +45,14 @@ asmlinkage unsigned int csum_partial_cop * verify_area(). */ static __inline__ -unsigned int csum_partial_copy_nocheck ( const char *src, char *dst, +unsigned int csum_partial_copy_nocheck (const unsigned char *src, unsigned char *dst, int len, int sum) { return csum_partial_copy_generic ( src, dst, len, sum, NULL, NULL); } static __inline__ -unsigned int csum_partial_copy_from_user ( const char *src, char *dst, +unsigned int csum_partial_copy_from_user (const unsigned char *src, unsigned char *dst, int len, int sum, int *err_ptr) { return csum_partial_copy_generic ( src, dst, len, sum, err_ptr, NULL); @@ -200,8 +200,8 @@ static __inline__ unsigned short int csu * Copy and checksum to user */ #define HAVE_CSUM_COPY_USER -static __inline__ unsigned int csum_and_copy_to_user (const char *src, - char __user *dst, +static __inline__ unsigned int csum_and_copy_to_user (const unsigned char *src, + unsigned char __user *dst, int len, int sum, int *err_ptr) { diff -puN include/asm-sparc64/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes include/asm-sparc64/checksum.h --- 25/include/asm-sparc64/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.837502288 -0800 +++ 25-akpm/include/asm-sparc64/checksum.h 2005-01-10 15:46:05.853499856 -0800 @@ -38,10 +38,11 @@ extern unsigned int csum_partial(const u * here even more important to align src and dst on a 32-bit (or even * better 64-bit) boundary */ -extern unsigned int csum_partial_copy_sparc64(const char *src, char *dst, int len, unsigned int sum); +extern unsigned int csum_partial_copy_sparc64(const unsigned char *src, unsigned char *dst, + int len, unsigned int sum); static inline unsigned int -csum_partial_copy_nocheck (const char *src, char *dst, int len, +csum_partial_copy_nocheck (const unsigned char *src, unsigned char *dst, int len, unsigned int sum) { int ret; @@ -53,7 +54,7 @@ csum_partial_copy_nocheck (const char *s } static inline unsigned int -csum_partial_copy_from_user(const char __user *src, char *dst, int len, +csum_partial_copy_from_user(const unsigned char __user *src, unsigned char *dst, int len, unsigned int sum, int *err) { __asm__ __volatile__ ("stx %0, [%%sp + 0x7ff + 128]" @@ -66,10 +67,11 @@ csum_partial_copy_from_user(const char _ * Copy and checksum to user */ #define HAVE_CSUM_COPY_USER -extern unsigned int csum_partial_copy_user_sparc64(const char *src, char __user *dst, int len, unsigned int sum); +extern unsigned int csum_partial_copy_user_sparc64(const unsigned char *src, unsigned char __user *dst, + int len, unsigned int sum); static inline unsigned int -csum_and_copy_to_user(const char *src, char __user *dst, int len, +csum_and_copy_to_user(const unsigned char *src, unsigned char __user *dst, int len, unsigned int sum, int *err) { __asm__ __volatile__ ("stx %0, [%%sp + 0x7ff + 128]" diff -puN include/asm-sparc/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes include/asm-sparc/checksum.h --- 25/include/asm-sparc/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.838502136 -0800 +++ 25-akpm/include/asm-sparc/checksum.h 2005-01-10 15:46:05.853499856 -0800 @@ -39,10 +39,10 @@ extern unsigned int csum_partial(const u * better 64-bit) boundary */ -extern unsigned int __csum_partial_copy_sparc_generic (const char *, char *); +extern unsigned int __csum_partial_copy_sparc_generic (const unsigned char *, unsigned char *); static inline unsigned int -csum_partial_copy_nocheck (const char *src, char *dst, int len, +csum_partial_copy_nocheck (const unsigned char *src, unsigned char *dst, int len, unsigned int sum) { register unsigned int ret asm("o0") = (unsigned int)src; @@ -61,7 +61,7 @@ csum_partial_copy_nocheck (const char *s } static inline unsigned int -csum_partial_copy_from_user(const char *src, char *dst, int len, +csum_partial_copy_from_user(const unsigned char *src, unsigned char *dst, int len, unsigned int sum, int *err) { if (!access_ok (VERIFY_READ, src, len)) { @@ -91,7 +91,7 @@ csum_partial_copy_from_user(const char * } static inline unsigned int -csum_partial_copy_to_user(const char *src, char __user *dst, int len, +csum_partial_copy_to_user(const unsigned char *src, unsigned char __user *dst, int len, unsigned int sum, int *err) { if (!access_ok (VERIFY_WRITE, dst, len)) { diff -puN include/asm-x86_64/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes include/asm-x86_64/checksum.h --- 25/include/asm-x86_64/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.839501984 -0800 +++ 25-akpm/include/asm-x86_64/checksum.h 2005-01-10 15:46:05.854499704 -0800 @@ -133,17 +133,17 @@ extern unsigned int csum_partial(const u /* Do not call this directly. Use the wrappers below */ -extern unsigned long csum_partial_copy_generic(const char *src, const char *dst, +extern unsigned long csum_partial_copy_generic(const unsigned char *src, const unsigned char *dst, unsigned len, unsigned sum, int *src_err_ptr, int *dst_err_ptr); -extern unsigned int csum_partial_copy_from_user(const char __user *src, char *dst, +extern unsigned int csum_partial_copy_from_user(const unsigned char __user *src, unsigned char *dst, int len, unsigned int isum, int *errp); -extern unsigned int csum_partial_copy_to_user(const char *src, char __user *dst, +extern unsigned int csum_partial_copy_to_user(const unsigned char *src, unsigned char __user *dst, int len, unsigned int isum, int *errp); -extern unsigned int csum_partial_copy_nocheck(const char *src, char *dst, int len, +extern unsigned int csum_partial_copy_nocheck(const unsigned char *src, unsigned char *dst, int len, unsigned int sum); /* Old names. To be removed. */ diff -puN include/net/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes include/net/checksum.h --- 25/include/net/checksum.h~csum_and_copy_from_user-gcc4-warning-fixes 2005-01-10 15:46:05.841501680 -0800 +++ 25-akpm/include/net/checksum.h 2005-01-10 15:46:05.855499552 -0800 @@ -27,7 +27,7 @@ #ifndef _HAVE_ARCH_COPY_AND_CSUM_FROM_USER static inline -unsigned int csum_and_copy_from_user (const char __user *src, char *dst, +unsigned int csum_and_copy_from_user (const unsigned char __user *src, unsigned char *dst, int len, int sum, int *err_ptr) { if (verify_area(VERIFY_READ, src, len) == 0) @@ -42,7 +42,7 @@ unsigned int csum_and_copy_from_user (co #ifndef HAVE_CSUM_COPY_USER static __inline__ unsigned int csum_and_copy_to_user -(const char *src, char __user *dst, int len, unsigned int sum, int *err_ptr) +(const unsigned char *src, unsigned char __user *dst, int len, unsigned int sum, int *err_ptr) { sum = csum_partial(src, len, sum); _