Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] frv: signal annotations

Add annotations to the FRV signal handling for sparse.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Al Viro and committed by
Linus Torvalds
9e4d11f8 3f4cd389

+13 -13
+10 -10
arch/frv/kernel/signal.c
··· 98 98 99 99 struct sigframe 100 100 { 101 - void (*pretcode)(void); 101 + __sigrestore_t pretcode; 102 102 int sig; 103 103 struct sigcontext sc; 104 104 unsigned long extramask[_NSIG_WORDS-1]; ··· 107 107 108 108 struct rt_sigframe 109 109 { 110 - void (*pretcode)(void); 110 + __sigrestore_t pretcode; 111 111 int sig; 112 - struct siginfo *pinfo; 113 - void *puc; 112 + struct siginfo __user *pinfo; 113 + void __user *puc; 114 114 struct siginfo info; 115 115 struct ucontext uc; 116 116 uint32_t retcode[2]; ··· 284 284 * setlos #__NR_sigreturn,gr7 285 285 * tira gr0,0 286 286 */ 287 - if (__put_user((void (*)(void))frame->retcode, &frame->pretcode) || 287 + if (__put_user((__sigrestore_t)frame->retcode, &frame->pretcode) || 288 288 __put_user(0x8efc0000|__NR_sigreturn, &frame->retcode[0]) || 289 289 __put_user(0xc0700000, &frame->retcode[1])) 290 290 goto give_sigsegv; ··· 300 300 301 301 if (get_personality & FDPIC_FUNCPTRS) { 302 302 struct fdpic_func_descriptor __user *funcptr = 303 - (struct fdpic_func_descriptor *) ka->sa.sa_handler; 303 + (struct fdpic_func_descriptor __user *) ka->sa.sa_handler; 304 304 __get_user(__frame->pc, &funcptr->text); 305 305 __get_user(__frame->gr15, &funcptr->GOT); 306 306 } else { ··· 359 359 360 360 /* Create the ucontext. */ 361 361 if (__put_user(0, &frame->uc.uc_flags) || 362 - __put_user(0, &frame->uc.uc_link) || 363 - __put_user((void*)current->sas_ss_sp, &frame->uc.uc_stack.ss_sp) || 362 + __put_user(NULL, &frame->uc.uc_link) || 363 + __put_user((void __user *)current->sas_ss_sp, &frame->uc.uc_stack.ss_sp) || 364 364 __put_user(sas_ss_flags(__frame->sp), &frame->uc.uc_stack.ss_flags) || 365 365 __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size)) 366 366 goto give_sigsegv; ··· 382 382 * setlos #__NR_sigreturn,gr7 383 383 * tira gr0,0 384 384 */ 385 - if (__put_user((void (*)(void))frame->retcode, &frame->pretcode) || 385 + if (__put_user((__sigrestore_t)frame->retcode, &frame->pretcode) || 386 386 __put_user(0x8efc0000|__NR_rt_sigreturn, &frame->retcode[0]) || 387 387 __put_user(0xc0700000, &frame->retcode[1])) 388 388 goto give_sigsegv; ··· 398 398 __frame->gr9 = (unsigned long) &frame->info; 399 399 400 400 if (get_personality & FDPIC_FUNCPTRS) { 401 - struct fdpic_func_descriptor *funcptr = 401 + struct fdpic_func_descriptor __user *funcptr = 402 402 (struct fdpic_func_descriptor __user *) ka->sa.sa_handler; 403 403 __get_user(__frame->pc, &funcptr->text); 404 404 __get_user(__frame->gr15, &funcptr->GOT);
+3 -3
include/asm-frv/signal.h
··· 114 114 __sighandler_t sa_handler; 115 115 old_sigset_t sa_mask; 116 116 unsigned long sa_flags; 117 - void (*sa_restorer)(void); 117 + __sigrestore_t sa_restorer; 118 118 }; 119 119 120 120 struct sigaction { 121 121 __sighandler_t sa_handler; 122 122 unsigned long sa_flags; 123 - void (*sa_restorer)(void); 123 + __sigrestore_t sa_restorer; 124 124 sigset_t sa_mask; /* mask last for extensibility */ 125 125 }; 126 126 ··· 146 146 #endif /* __KERNEL__ */ 147 147 148 148 typedef struct sigaltstack { 149 - void *ss_sp; 149 + void __user *ss_sp; 150 150 int ss_flags; 151 151 size_t ss_size; 152 152 } stack_t;