From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/12538 Path: news.gmane.org!.POSTED!not-for-mail From: Julien Ramseier Newsgroups: gmane.linux.lib.musl.general Subject: [PATCH] sigtimedwait: allow failing with EINTR Date: Fri, 23 Feb 2018 13:09:35 +0100 Message-ID: Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 (Mac OS X Mail 11.2 \(3445.5.20\)) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-Trace: blaine.gmane.org 1519387669 23911 195.159.176.226 (23 Feb 2018 12:07:49 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 23 Feb 2018 12:07:49 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-12554-gllmg-musl=m.gmane.org@lists.openwall.com Fri Feb 23 13:07:45 2018 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.84_2) (envelope-from ) id 1epC8e-0005qc-P5 for gllmg-musl@m.gmane.org; Fri, 23 Feb 2018 13:07:44 +0100 Original-Received: (qmail 26440 invoked by uid 550); 23 Feb 2018 12:09:48 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 26396 invoked from network); 23 Feb 2018 12:09:48 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:content-transfer-encoding:mime-version:subject:message-id:date :to; bh=FZGOuxbvSDxxfKOANcRA9JytuvOV7jo+gGeWXXODDSM=; b=LKU65WujiA7Y4ssuiPOfL0xV3gHednuj7OX4D4bC/nNT69d9LjxuXoNEgVb5eLqKHH aVC0BK25WWIoAa6o1h1qvCurfaXLRVy0q+1LR/Fslk1tK4ZJg5IcWP48InxGL8ziGxLm MATQtyjVXfzbN30T7dVmNlzv+uwzPFY6/366DiTalr4KSkRB2dcXG3V/bk/wPm35OQEd xPd+p6D0rRvjbpnSELEZCanvqxlBX/7UocmARfPQb+TDs7AbWBAD4Pg8+9iaulj55Z6c BfCZ8bQbhLZ0Js0wsYPKV9O5zTWQ36vUEi4M7Dkn1jGCz3o/KiIrj8tyIU+REJOx0Oos aqAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:message-id:date:to; bh=FZGOuxbvSDxxfKOANcRA9JytuvOV7jo+gGeWXXODDSM=; b=HL614+GYxjdtG57pnv4DBNjapE3WofXaNxLYLQYxUQfLRVy6DROsYLT4yp2fmhyjn0 8QfJdAsIrPtR+vXlbI9X5LOId5dvB5cOq7IBLt9n/8+cDH9wcP9WAZOIvXfJ51lYkPgN ezlg2ETVgIfE3Z0ac1DT7jByy01mwcg219eGG0L2r0qy54Lm9+aeTQ/dXb+1rwno6d7c 4SzhggNsv1Zrno2LFZvsL3tn1usK9WPKRByCQ5GGo1XjpoH8hHMP1Hopcjl/K18MBcqE zeQsUi3axjbNBCdqiD00V4c1wMrTxKZnso9B8LU58yeH6YMP3dt3G389R5jdIz0cs96Z +1tg== X-Gm-Message-State: APf1xPDN/v02iatH5ljZk2XFkONbmlnCeVo8BJe455bQmqYwlEOsnXg+ isT55PGIN4RcB9GQhM5zSLv25/mS X-Google-Smtp-Source: AH8x224a5a2C1vWaoC/g8rFk/gULt66Xa+zkv4D1ZJLfrSM0x4WUwVuaORB1Ixwk53npPpHlZvJ4Ww== X-Received: by 10.80.165.34 with SMTP id y31mr2581494edb.261.1519387776585; Fri, 23 Feb 2018 04:09:36 -0800 (PST) X-Mailer: Apple Mail (2.3445.5.20) Xref: news.gmane.org gmane.linux.lib.musl.general:12538 Archived-At: According to POSIX, sigtimedwait(2) is allowed to fail with EINTR, while sigwait(3) is not, so move the retry loop there. --- diff --git a/src/signal/sigtimedwait.c b/src/signal/sigtimedwait.c index 0739986b..97a526da 100644 --- a/src/signal/sigtimedwait.c +++ b/src/signal/sigtimedwait.c @@ -1,13 +1,8 @@ #include -#include #include "syscall.h" #include "libc.h" =20 int sigtimedwait(const sigset_t *restrict mask, siginfo_t *restrict si, = const struct timespec *restrict timeout) { - int ret; - do ret =3D syscall_cp(SYS_rt_sigtimedwait, mask, - si, timeout, _NSIG/8); - while (ret<0 && errno=3D=3DEINTR); - return ret; + return syscall_cp(SYS_rt_sigtimedwait, mask, si, timeout, = _NSIG/8); } diff --git a/src/signal/sigwait.c b/src/signal/sigwait.c index c8822eea..53d04803 100644 --- a/src/signal/sigwait.c +++ b/src/signal/sigwait.c @@ -1,10 +1,13 @@ +#include #include =20 int sigwait(const sigset_t *restrict mask, int *restrict sig) { + int ret; siginfo_t si; - if (sigtimedwait(mask, &si, 0) < 0) - return -1; + do ret =3D sigtimedwait(mask, &si, 0); + while (ret<0 && errno=3D=3DEINTR); + if (ret<0) return -1; *sig =3D si.si_signo; return 0; }