Le 19/01/2021 à 19:24, Alistair Francis a écrit : > When mapping the host waitid status to the target status we previously > just used decoding information in the status value. This doesn't follow > what the waitid documentation describes, which instead suggests using > the si_code value for the decoding. This results in the incorrect values > seen when calling waitid. This is especially apparent on RV32 where all > wait calls use waitid (see the bug case). > > This patch just passes the waitid status directly back to the guest. > > Buglink: https://bugs.launchpad.net/qemu/+bug/1906193 > Signed-off-by: Alistair Francis <alistair.fran...@wdc.com> > --- > v2: > - Set tinfo->_sifields._sigchld._status directly from status > > linux-user/signal.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/linux-user/signal.c b/linux-user/signal.c > index 73de934c65..7eecec46c4 100644 > --- a/linux-user/signal.c > +++ b/linux-user/signal.c > @@ -349,8 +349,7 @@ static inline void > host_to_target_siginfo_noswap(target_siginfo_t *tinfo, > case TARGET_SIGCHLD: > tinfo->_sifields._sigchld._pid = info->si_pid; > tinfo->_sifields._sigchld._uid = info->si_uid; > - tinfo->_sifields._sigchld._status > - = host_to_target_waitstatus(info->si_status); > + tinfo->_sifields._sigchld._status = info->si_status; > tinfo->_sifields._sigchld._utime = info->si_utime; > tinfo->_sifields._sigchld._stime = info->si_stime; > si_type = QEMU_SI_CHLD; >
Reviewed-by: Laurent Vivier <laur...@vivier.eu>