diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2006-06-23 05:04:04 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-23 10:42:54 -0400 |
| commit | 9e4d11f8630d5350adc5d4d65180e69991c498f8 (patch) | |
| tree | d8f05482adf66069f218833ea8f14d9285dae885 /arch/frv | |
| parent | 3f4cd389c3564caf1eec70957fcbd9d88c995d45 (diff) | |
[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>
Diffstat (limited to 'arch/frv')
| -rw-r--r-- | arch/frv/kernel/signal.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/arch/frv/kernel/signal.c b/arch/frv/kernel/signal.c index 679c1d5cc958..dd5e6fdd85fd 100644 --- a/arch/frv/kernel/signal.c +++ b/arch/frv/kernel/signal.c | |||
| @@ -98,7 +98,7 @@ int sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss) | |||
| 98 | 98 | ||
| 99 | struct sigframe | 99 | struct sigframe |
| 100 | { | 100 | { |
| 101 | void (*pretcode)(void); | 101 | __sigrestore_t pretcode; |
| 102 | int sig; | 102 | int sig; |
| 103 | struct sigcontext sc; | 103 | struct sigcontext sc; |
| 104 | unsigned long extramask[_NSIG_WORDS-1]; | 104 | unsigned long extramask[_NSIG_WORDS-1]; |
| @@ -107,10 +107,10 @@ struct sigframe | |||
| 107 | 107 | ||
| 108 | struct rt_sigframe | 108 | struct rt_sigframe |
| 109 | { | 109 | { |
| 110 | void (*pretcode)(void); | 110 | __sigrestore_t pretcode; |
| 111 | int sig; | 111 | int sig; |
| 112 | struct siginfo *pinfo; | 112 | struct siginfo __user *pinfo; |
| 113 | void *puc; | 113 | void __user *puc; |
| 114 | struct siginfo info; | 114 | struct siginfo info; |
| 115 | struct ucontext uc; | 115 | struct ucontext uc; |
| 116 | uint32_t retcode[2]; | 116 | uint32_t retcode[2]; |
| @@ -284,7 +284,7 @@ static int setup_frame(int sig, struct k_sigaction *ka, sigset_t *set) | |||
| 284 | * setlos #__NR_sigreturn,gr7 | 284 | * setlos #__NR_sigreturn,gr7 |
| 285 | * tira gr0,0 | 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 | __put_user(0x8efc0000|__NR_sigreturn, &frame->retcode[0]) || | 288 | __put_user(0x8efc0000|__NR_sigreturn, &frame->retcode[0]) || |
| 289 | __put_user(0xc0700000, &frame->retcode[1])) | 289 | __put_user(0xc0700000, &frame->retcode[1])) |
| 290 | goto give_sigsegv; | 290 | goto give_sigsegv; |
| @@ -300,7 +300,7 @@ static int setup_frame(int sig, struct k_sigaction *ka, sigset_t *set) | |||
| 300 | 300 | ||
| 301 | if (get_personality & FDPIC_FUNCPTRS) { | 301 | if (get_personality & FDPIC_FUNCPTRS) { |
| 302 | struct fdpic_func_descriptor __user *funcptr = | 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 | __get_user(__frame->pc, &funcptr->text); | 304 | __get_user(__frame->pc, &funcptr->text); |
| 305 | __get_user(__frame->gr15, &funcptr->GOT); | 305 | __get_user(__frame->gr15, &funcptr->GOT); |
| 306 | } else { | 306 | } else { |
| @@ -359,8 +359,8 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, | |||
| 359 | 359 | ||
| 360 | /* Create the ucontext. */ | 360 | /* Create the ucontext. */ |
| 361 | if (__put_user(0, &frame->uc.uc_flags) || | 361 | if (__put_user(0, &frame->uc.uc_flags) || |
| 362 | __put_user(0, &frame->uc.uc_link) || | 362 | __put_user(NULL, &frame->uc.uc_link) || |
| 363 | __put_user((void*)current->sas_ss_sp, &frame->uc.uc_stack.ss_sp) || | 363 | __put_user((void __user *)current->sas_ss_sp, &frame->uc.uc_stack.ss_sp) || |
| 364 | __put_user(sas_ss_flags(__frame->sp), &frame->uc.uc_stack.ss_flags) || | 364 | __put_user(sas_ss_flags(__frame->sp), &frame->uc.uc_stack.ss_flags) || |
| 365 | __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size)) | 365 | __put_user(current->sas_ss_size, &frame->uc.uc_stack.ss_size)) |
| 366 | goto give_sigsegv; | 366 | goto give_sigsegv; |
| @@ -382,7 +382,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, | |||
| 382 | * setlos #__NR_sigreturn,gr7 | 382 | * setlos #__NR_sigreturn,gr7 |
| 383 | * tira gr0,0 | 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 | __put_user(0x8efc0000|__NR_rt_sigreturn, &frame->retcode[0]) || | 386 | __put_user(0x8efc0000|__NR_rt_sigreturn, &frame->retcode[0]) || |
| 387 | __put_user(0xc0700000, &frame->retcode[1])) | 387 | __put_user(0xc0700000, &frame->retcode[1])) |
| 388 | goto give_sigsegv; | 388 | goto give_sigsegv; |
| @@ -398,7 +398,7 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, | |||
| 398 | __frame->gr9 = (unsigned long) &frame->info; | 398 | __frame->gr9 = (unsigned long) &frame->info; |
| 399 | 399 | ||
| 400 | if (get_personality & FDPIC_FUNCPTRS) { | 400 | if (get_personality & FDPIC_FUNCPTRS) { |
| 401 | struct fdpic_func_descriptor *funcptr = | 401 | struct fdpic_func_descriptor __user *funcptr = |
| 402 | (struct fdpic_func_descriptor __user *) ka->sa.sa_handler; | 402 | (struct fdpic_func_descriptor __user *) ka->sa.sa_handler; |
| 403 | __get_user(__frame->pc, &funcptr->text); | 403 | __get_user(__frame->pc, &funcptr->text); |
| 404 | __get_user(__frame->gr15, &funcptr->GOT); | 404 | __get_user(__frame->gr15, &funcptr->GOT); |
