aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2006-06-23 05:04:04 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-23 10:42:54 -0400
commit9e4d11f8630d5350adc5d4d65180e69991c498f8 (patch)
treed8f05482adf66069f218833ea8f14d9285dae885
parent3f4cd389c3564caf1eec70957fcbd9d88c995d45 (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.c20
-rw-r--r--include/asm-frv/signal.h6
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
99struct sigframe 99struct 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
108struct rt_sigframe 108struct 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
120struct sigaction { 120struct 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
148typedef struct sigaltstack { 148typedef 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;