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/kernel | |
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/kernel')
-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); |