Report ignored __xn_copy_*_user return codes
RFC PATCH 5/5 Report ignored __xn_copy_*_user return codes
As recently suggested, this patch arms the __must_check logic behind __xn_copy_to_user, __xn_copy_from_user (not on i386 due to lacking instrumentation of Linux service), __xn_strncpy_from_user.
This patch is only intended to point out what remains to be addressed, the huge number of warnings make it unsuited form a merge at this -rc stage.
Jan
--- include/asm-generic/wrappers.h | 4 ++++ include/asm-x86/hal.h | 4 ++++ include/asm-x86/hal_32.h | 2 -- include/asm-x86/hal_64.h | 4 ---- include/asm-x86/syscall_32.h | 11 ++++------- include/asm-x86/syscall_64.h | 11 ++++------- 6 files changed, 16 insertions(+), 20 deletions(-)
include/asm-x86/hal.h +4 -0
@@ -46,4 +46,8 @@ extern enum rthal_ktimer_mode rthal_ktim#include "hal_64.h" #endif +long __must_check rthal_strncpy_from_user (char *dst, +const char __user *src, +long count); +#endif /* !_XENO_ASM_X86_HAL_H */
include/asm-x86/hal_32.h +0 -2
@@ -222,8 +222,6 @@ static inline void rthal_setup_oneshot_a#endif /* !__cplusplus */ -long rthal_strncpy_from_user (char *dst,const char __user * src,long count); -void rthal_latency_above_max (struct pt_regs *regs);#endif /* !_XENO_ASM_X86_HAL_32_H */
include/asm-x86/hal_64.h +0 -4
@@ -138,8 +138,4 @@ static inline void rthal_setup_oneshot_a#endif /* !__cplusplus */ -long rthal_strncpy_from_user (char *dst, -const char __user *src, -long count); -#endif /* !_XENO_ASM_X86_HAL_64_H */
include/asm-x86/syscall_32.h +4 -7
@@ -47,13 +47,10 @@#define __xn_mux_op (regs) ((__xn_reg_mux(regs) >> 24) & 0xff)/* Our own set of copy-to/from-user macros which must bypass -might_sleep() checks. The caller cannot fault and is expected to -have checked for bad range before using the copy macros, so we -should not have to care about the result. */ -#define __xn_copy_from_user (task,dstP,srcP,n) \ - ({ int __err__ = __copy_from_user_inatomic(dstP,srcP,n); __err__; }) -#define __xn_copy_to_user (task,dstP,srcP,n) \ - ({ int __err__ = __copy_to_user_inatomic(dstP,srcP,n); __err__; }) +might_sleep() checks. The caller is expected to have checked +for bad range before using the copy macros. */ +#define __xn_copy_from_user (task,dstP,srcP,n) __copy_from_user_inatomic(dstP,srcP,n) +#define __xn_copy_to_user (task,dstP,srcP,n) __copy_to_user_inatomic(dstP,srcP,n)#define __xn_put_user (task,src,dstP) __put_user(src,dstP)#define __xn_get_user (task,dst,srcP) __get_user(dst,srcP)#define __xn_strncpy_from_user (task,dstP,srcP,n) wrap_strncpy_from_user(dstP,srcP,n)
include/asm-x86/syscall_64.h +4 -7
@@ -47,13 +47,10 @@#define __xn_mux_op (regs) ((__xn_reg_mux(regs) >> 24) & 0xff)/* Our own set of copy-to/from-user macros which must bypass -might_sleep() checks. The caller cannot fault and is expected to -have checked for bad range before using the copy macros, so we -should not have to care about the result. */ -#define __xn_copy_from_user (task,dstP,srcP,n) \ - ({ int __err__ = __copy_from_user_inatomic(dstP,srcP,n); __err__; }) -#define __xn_copy_to_user (task,dstP,srcP,n) \ - ({ int __err__ = __copy_to_user_inatomic(dstP,srcP,n); __err__; }) +might_sleep() checks. The caller is expected to have checked +for bad range before using the copy macros. */ +#define __xn_copy_from_user (task,dstP,srcP,n) __copy_from_user_inatomic(dstP,srcP,n) +#define __xn_copy_to_user (task,dstP,srcP,n) __copy_to_user_inatomic(dstP,srcP,n)#define __xn_put_user (task,src,dstP) __put_user(src,dstP)#define __xn_get_user (task,dst,srcP) __get_user(dst,srcP)#define __xn_strncpy_from_user (task,dstP,srcP,n) rthal_strncpy_from_user(dstP,srcP,n)
include/asm-generic/wrappers.h +4 -0
@@ -183,6 +183,10 @@ void show_stack(struct task_struct *task#define __deprecated __attribute__((deprecated))#endif +#ifndef __must_check +#define __must_check +#endif +#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) */ #define compat_module_param_array (name, type, count, perm) \