sh: fix trivial misannotations
Trivial misannotations in * get_user() (__gu_addr is a userland pointer there) * ip_fast_csum() (sum is __wsum, not unsigned int) * csum_and_copy_to_user() (destination is void *, not const void * - mea culpa) * __clear_user() (to is a userland pointer) * several places in kernel/traps_32.c (regs->pc is a userland pointer when regs is a userland pt_regs) * math-emu/math.c: READ() and WRITE() casts of address should be to userland pointer. No changes in code generation and those take care of the majority of noise from sparse on sh builds. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> Signed-off-by: Rich Felker <dalias@libc.org>
This commit is contained in:
@@ -84,7 +84,8 @@ static inline __sum16 csum_fold(__wsum sum)
|
||||
*/
|
||||
static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl)
|
||||
{
|
||||
unsigned int sum, __dummy0, __dummy1;
|
||||
__wsum sum;
|
||||
unsigned int __dummy0, __dummy1;
|
||||
|
||||
__asm__ __volatile__(
|
||||
"mov.l @%1+, %0\n\t"
|
||||
@@ -197,6 +198,6 @@ static inline __wsum csum_and_copy_to_user(const void *src,
|
||||
{
|
||||
if (!access_ok(dst, len))
|
||||
return 0;
|
||||
return csum_partial_copy_generic((__force const void *)src, dst, len);
|
||||
return csum_partial_copy_generic(src, (__force void *)dst, len);
|
||||
}
|
||||
#endif /* __ASM_SH_CHECKSUM_H */
|
||||
|
||||
@@ -68,7 +68,7 @@ struct __large_struct { unsigned long buf[100]; };
|
||||
({ \
|
||||
long __gu_err = -EFAULT; \
|
||||
unsigned long __gu_val = 0; \
|
||||
const __typeof__(*(ptr)) *__gu_addr = (ptr); \
|
||||
const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \
|
||||
if (likely(access_ok(__gu_addr, (size)))) \
|
||||
__get_user_size(__gu_val, __gu_addr, (size), __gu_err); \
|
||||
(x) = (__force __typeof__(*(ptr)))__gu_val; \
|
||||
@@ -124,7 +124,7 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n)
|
||||
* Clear the area and return remaining number of bytes
|
||||
* (on failure. Usually it's 0.)
|
||||
*/
|
||||
__kernel_size_t __clear_user(void *addr, __kernel_size_t size);
|
||||
__kernel_size_t __clear_user(void __user *addr, __kernel_size_t size);
|
||||
|
||||
#define clear_user(addr,n) \
|
||||
({ \
|
||||
|
||||
Reference in New Issue
Block a user