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 | |
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>
-rw-r--r-- | arch/frv/kernel/signal.c | 20 | ||||
-rw-r--r-- | include/asm-frv/signal.h | 6 |
2 files changed, 13 insertions, 13 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); |
diff --git a/include/asm-frv/signal.h b/include/asm-frv/signal.h index 67366894780f..dcc1b3592918 100644 --- a/include/asm-frv/signal.h +++ b/include/asm-frv/signal.h | |||
@@ -114,13 +114,13 @@ struct old_sigaction { | |||
114 | __sighandler_t sa_handler; | 114 | __sighandler_t sa_handler; |
115 | old_sigset_t sa_mask; | 115 | old_sigset_t sa_mask; |
116 | unsigned long sa_flags; | 116 | unsigned long sa_flags; |
117 | void (*sa_restorer)(void); | 117 | __sigrestore_t sa_restorer; |
118 | }; | 118 | }; |
119 | 119 | ||
120 | struct sigaction { | 120 | struct sigaction { |
121 | __sighandler_t sa_handler; | 121 | __sighandler_t sa_handler; |
122 | unsigned long sa_flags; | 122 | unsigned long sa_flags; |
123 | void (*sa_restorer)(void); | 123 | __sigrestore_t sa_restorer; |
124 | sigset_t sa_mask; /* mask last for extensibility */ | 124 | sigset_t sa_mask; /* mask last for extensibility */ |
125 | }; | 125 | }; |
126 | 126 | ||
@@ -146,7 +146,7 @@ struct sigaction { | |||
146 | #endif /* __KERNEL__ */ | 146 | #endif /* __KERNEL__ */ |
147 | 147 | ||
148 | typedef struct sigaltstack { | 148 | typedef struct sigaltstack { |
149 | void *ss_sp; | 149 | void __user *ss_sp; |
150 | int ss_flags; | 150 | int ss_flags; |
151 | size_t ss_size; | 151 | size_t ss_size; |
152 | } stack_t; | 152 | } stack_t; |