ppc64: Fix 32 bits conversion of SI_TIMER signals
PATCH 1/1 ppc64: Fix 32 bits conversion of SI_TIMER signals
Hi !
The current 32 bits translation of the SI_TIMER is wrong on ppc64, causing the tst-timer4 testcase of glibc to fail in 32 bits. This patch fixes it.
Signed-off-by Olaf Hering <[email protected]>
Signed-ogg-by Benjamin Herrenschmidt <[email protected]>
===== arch/ppc64/kernel/signal32.c 1.57 vs edited =====
arch/ppc64/kernel/signal32.c +5 -1
@@ -472,9 +472,13 @@ &d->si_addr);break ;case __SI_POLL >>16 : -case __SI_TIMER >>16 : err |=__put_user (s->si_band, &d->si_band); err |=__put_user (s->si_fd, &d->si_fd); +break ; +case __SI_TIMER >>16 : + err |=__put_user (s->si_tid, &d->si_tid); + err |=__put_user (s->si_overrun, &d->si_overrun); + err |=__put_user ((u32 )(u64 )s->si_ptr, &d->si_ptr);break ;case __SI_RT >>16 :/* This is not generated by the kernel as of now. */ case __SI_MESGQ >>16 :
===== include/asm-ppc64/ppc32.h 1.16 vs edited =====
include/asm-ppc64/ppc32.h +4 -2
@@ -32,8 +32,10 @@/* POSIX.1b timers */ struct { -unsigned int _timer1; -unsigned int _timer2; +timer_t _tid;/* timer id */ +int _overrun;/* overrun count */ +compat_sigval_t _sigval;/* same as below */ +int _sys_private;/* not to be passed to user */ } _timer;/* POSIX.1b signals */
Signature · 1 line
Benjamin Herrenschmidt <[email protected]>