diff options
author | Jurij Smakov <jurij@wooyd.org> | 2005-04-17 21:03:12 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-17 21:03:12 -0400 |
commit | 9c7d3b3a6b6aaeded9d9e5c5111dbcc65b0b0f91 (patch) | |
tree | 19b2c9e85dcab6df9250ba38df885d951c96e0a6 /arch/sparc64/kernel/signal32.c | |
parent | dadeafdfc8da8c27e5a68e0706b9856eaac89391 (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>
Diffstat (limited to 'arch/sparc64/kernel/signal32.c')
-rw-r--r-- | arch/sparc64/kernel/signal32.c | 5 |
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); |