diff --git a/components/lwp/lwp_syscall.c b/components/lwp/lwp_syscall.c index bff158ff0cfb9ca8e835a38841289461bd501e8d..0464a0f7a0271033b4c90807021d2e688fa74872 100644 --- a/components/lwp/lwp_syscall.c +++ b/components/lwp/lwp_syscall.c @@ -923,7 +923,8 @@ int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp) if ((ret != -1 || rt_get_errno() == EINTR) && rmtp && lwp_user_accessable((void *)rmtp, sizeof *rmtp)) { lwp_put_to_user(rmtp, (void *)&rmtp_k, sizeof rmtp_k); - return -EINTR; + if(ret != 0) + return -EINTR; } #else if (rmtp) @@ -3872,7 +3873,8 @@ int sys_clock_nanosleep(clockid_t clk, int flags, const struct timespec *rqtp, s if ((ret != -1 || rt_get_errno() == EINTR) && rmtp && lwp_user_accessable((void *)rmtp, sizeof *rmtp)) { lwp_put_to_user(rmtp, (void *)&rmtp_k, sizeof rmtp_k); - return -EINTR; + if(ret != 0) + return -EINTR; } #else if (rmtp)