aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJurij Smakov <jurij@wooyd.org>2005-04-17 21:03:12 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-17 21:03:12 -0400
commit9c7d3b3a6b6aaeded9d9e5c5111dbcc65b0b0f91 (patch)
tree19b2c9e85dcab6df9250ba38df885d951c96e0a6
parentdadeafdfc8da8c27e5a68e0706b9856eaac89391 (diff)
[PATCH] sparc64: Fix copy_sigingo_to_user32()
The compat routine to copy over this data structure was not handling SI_POLL correctly, breaking various fcntl() variants in compat tasks. Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--arch/sparc64/kernel/signal32.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/sparc64/kernel/signal32.c b/arch/sparc64/kernel/signal32.c
index 859255cf6762..9a375e975cff 100644
--- a/arch/sparc64/kernel/signal32.c
+++ b/arch/sparc64/kernel/signal32.c
@@ -192,10 +192,13 @@ int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from)
192 err |= __put_user(from->si_uid, &to->si_uid); 192 err |= __put_user(from->si_uid, &to->si_uid);
193 break; 193 break;
194 case __SI_FAULT >> 16: 194 case __SI_FAULT >> 16:
195 case __SI_POLL >> 16:
196 err |= __put_user(from->si_trapno, &to->si_trapno); 195 err |= __put_user(from->si_trapno, &to->si_trapno);
197 err |= __put_user((unsigned long)from->si_addr, &to->si_addr); 196 err |= __put_user((unsigned long)from->si_addr, &to->si_addr);
198 break; 197 break;
198 case __SI_POLL >> 16:
199 err |= __put_user(from->si_band, &to->si_band);
200 err |= __put_user(from->si_fd, &to->si_fd);
201 break;
199 case __SI_RT >> 16: /* This is not generated by the kernel as of now. */ 202 case __SI_RT >> 16: /* This is not generated by the kernel as of now. */
200 case __SI_MESGQ >> 16: 203 case __SI_MESGQ >> 16:
201 err |= __put_user(from->si_pid, &to->si_pid); 204 err |= __put_user(from->si_pid, &to->si_pid);