diff options
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/kernel/signal32.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c index d50daee51fba..18c028ba9efa 100644 --- a/arch/mips/kernel/signal32.c +++ b/arch/mips/kernel/signal32.c | |||
@@ -76,8 +76,10 @@ typedef struct compat_siginfo { | |||
76 | 76 | ||
77 | /* POSIX.1b timers */ | 77 | /* POSIX.1b timers */ |
78 | struct { | 78 | struct { |
79 | unsigned int _timer1; | 79 | timer_t _tid; /* timer id */ |
80 | unsigned int _timer2; | 80 | int _overrun; /* overrun count */ |
81 | sigval_t32 _sigval; /* same as below */ | ||
82 | int _sys_private; /* not to be passed to user */ | ||
81 | } _timer; | 83 | } _timer; |
82 | 84 | ||
83 | /* POSIX.1b signals */ | 85 | /* POSIX.1b signals */ |
@@ -411,6 +413,11 @@ int copy_siginfo_to_user32(compat_siginfo_t *to, siginfo_t *from) | |||
411 | err |= __copy_to_user(&to->_sifields._pad, &from->_sifields._pad, SI_PAD_SIZE); | 413 | err |= __copy_to_user(&to->_sifields._pad, &from->_sifields._pad, SI_PAD_SIZE); |
412 | else { | 414 | else { |
413 | switch (from->si_code >> 16) { | 415 | switch (from->si_code >> 16) { |
416 | case __SI_TIMER >> 16: | ||
417 | err |= __put_user(from->si_tid, &to->si_tid); | ||
418 | err |= __put_user(from->si_overrun, &to->si_overrun); | ||
419 | err |= __put_user(from->si_int, &to->si_int); | ||
420 | break; | ||
414 | case __SI_CHLD >> 16: | 421 | case __SI_CHLD >> 16: |
415 | err |= __put_user(from->si_utime, &to->si_utime); | 422 | err |= __put_user(from->si_utime, &to->si_utime); |
416 | err |= __put_user(from->si_stime, &to->si_stime); | 423 | err |= __put_user(from->si_stime, &to->si_stime); |