From patchwork Mon Apr 12 21:11:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 42954 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 99A3C3982074; Mon, 12 Apr 2021 21:11:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 99A3C3982074 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1618261887; bh=yw5FDOmuRuD+XjRDcZYDzjXThdDqXEwO9nrTNWH1DkA=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=Y3d+gWO0t8U72XIFfVH5QUqmoSNmjXnYlgCiVVny74VdK9lO9kBID1OBTKQ9DLzgA AchyDeju7iNIg7AZ6tE8srhLlJVway23rtmxQkQkyO/LSVrjKuEP7OgkpdwSd7ewNV Etx/53OoyqTP91pwricYesaFq3A/wd0SlYDJGfoo= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qv1-xf2c.google.com (mail-qv1-xf2c.google.com [IPv6:2607:f8b0:4864:20::f2c]) by sourceware.org (Postfix) with ESMTPS id 38110385480B for ; Mon, 12 Apr 2021 21:11:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 38110385480B Received: by mail-qv1-xf2c.google.com with SMTP id 30so7045289qva.9 for ; Mon, 12 Apr 2021 14:11:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=yw5FDOmuRuD+XjRDcZYDzjXThdDqXEwO9nrTNWH1DkA=; b=PYqhgCJrrh/PoptwZHhBftJ40A9+NcXfVz5Msu9Gd1piksnKBrzIXynmZ+UDN19xG6 ZmVuUyMWo/De0P2EP8tKkqFTiGT+sclNbvu3T1fo3yEa2X+cSAAJpAUDLn3SGru7TUMt /25pdDwpduPmnCxF07QvG6IyNXqTpH4ygSFl0ArNURGO6HYaN46O4Vf5k2GC9JfsYZ/K lwUuOf4P58fMfq5ROfjfARpRDGL7al6fUEARyqFyMvU6Q+qfT6alhx0OFRdKFyyVZwd/ yG4fv0SMweyoz4RKxgG52ruOWBpTFOOkODwhf2iV4ztiJxGRwbnLEYNG886PqmHRbsJm zMlA== X-Gm-Message-State: AOAM530rVmgkRbSPW4waxOAv45w04oBCoBTAaM0fKtadiyIyPjrarWeZ QFyW11UynZdiBc0OreOOAnWt2lWk+SKtDM3J X-Google-Smtp-Source: ABdhPJzXSRt7wpXxpTSiRZ/XnS7+HUJZkjQC2TyIXeHkUSRKoCvoET9Mt3vGaLBDnVe+74/+mt1c6A== X-Received: by 2002:a05:6214:485:: with SMTP id ay5mr29879563qvb.41.1618261882634; Mon, 12 Apr 2021 14:11:22 -0700 (PDT) Received: from localhost.localdomain ([177.194.41.149]) by smtp.googlemail.com with ESMTPSA id i22sm3073392qko.135.2021.04.12.14.11.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Apr 2021 14:11:22 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH 05/11] misc: syslog: Assume MSG_NOSIGNAL support (BZ #17144) Date: Mon, 12 Apr 2021 18:11:07 -0300 Message-Id: <20210412211113.393120-5-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210412211113.393120-1-adhemerval.zanella@linaro.org> References: <20210412211113.393120-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" MSG_NOSIGNAL was added on POSIX 2008 and Hurd seems to support it. The SIGPIPE handling also makes the implementation not thread-safe (due the sigaction usage). Checked on x86_64-linux-gnu. --- misc/syslog.c | 49 +++----------------------------- sysdeps/unix/sysv/linux/syslog.c | 4 --- 2 files changed, 4 insertions(+), 49 deletions(-) delete mode 100644 sysdeps/unix/sysv/linux/syslog.c diff --git a/misc/syslog.c b/misc/syslog.c index 668b4c852b..a3e458f54a 100644 --- a/misc/syslog.c +++ b/misc/syslog.c @@ -69,13 +69,6 @@ extern char *__progname; /* Program name, from crt0. */ __libc_lock_define_initialized (static, syslog_lock) static void openlog_internal (const char *, int, int); static void closelog_internal (void); -#ifndef NO_SIGPIPE -static void sigpipe_handler (int); -#endif - -#ifndef send_flags -# define send_flags 0 -#endif struct cleanup_arg { @@ -89,15 +82,8 @@ static void cancel_handler (void *ptr) struct cleanup_arg *clarg = (struct cleanup_arg *) ptr; if (clarg != NULL) - { -#ifndef NO_SIGPIPE - if (clarg->oldaction != NULL) - __sigaction (SIGPIPE, clarg->oldaction, NULL); -#endif - - /* Free the memstream buffer, */ - free (clarg->buf); - } + /* Free the memstream buffer, */ + free (clarg->buf); /* Free the lock. */ __libc_lock_unlock (syslog_lock); @@ -154,10 +140,6 @@ __vsyslog_internal (int pri, const char *fmt, va_list ap, char *buf = 0; size_t bufsize = 0; size_t msgoff; -#ifndef NO_SIGPIPE - struct sigaction action, oldaction; - int sigpipe; -#endif int saved_errno = errno; char failbuf[3 * sizeof (pid_t) + sizeof "out of memory []"]; @@ -268,16 +250,6 @@ __vsyslog_internal (int pri, const char *fmt, va_list ap, (void) __writev (STDERR_FILENO, iov, v - iov + 1); } -#ifndef NO_SIGPIPE - /* Prepare for a broken connection. */ - memset (&action, 0, sizeof (action)); - action.sa_handler = sigpipe_handler; - sigemptyset (&action.sa_mask); - sigpipe = __sigaction (SIGPIPE, &action, &oldaction); - if (sigpipe == 0) - clarg.oldaction = &oldaction; -#endif - /* Get connected, output the message to the local logger. */ if (!connected) openlog_internal (LogTag, LogStat | LOG_NDELAY, 0); @@ -287,7 +259,7 @@ __vsyslog_internal (int pri, const char *fmt, va_list ap, if (LogType == SOCK_STREAM) ++bufsize; - if (!connected || __send (LogFile, buf, bufsize, send_flags) < 0) + if (!connected || __send (LogFile, buf, bufsize, MSG_NOSIGNAL) < 0) { if (connected) { @@ -296,7 +268,7 @@ __vsyslog_internal (int pri, const char *fmt, va_list ap, openlog_internal (LogTag, LogStat | LOG_NDELAY, 0); } - if (!connected || __send (LogFile, buf, bufsize, send_flags) < 0) + if (!connected || __send (LogFile, buf, bufsize, MSG_NOSIGNAL) < 0) { closelog_internal (); /* attempt re-open next time */ /* @@ -314,11 +286,6 @@ __vsyslog_internal (int pri, const char *fmt, va_list ap, } } -#ifndef NO_SIGPIPE - if (sigpipe == 0) - __sigaction (SIGPIPE, &oldaction, (struct sigaction *) NULL); -#endif - out: /* End of critical section. */ __libc_cleanup_pop (0); @@ -392,14 +359,6 @@ openlog (const char *ident, int logstat, int logfac) __libc_cleanup_pop (1); } -#ifndef NO_SIGPIPE -static void -sigpipe_handler (int signo) -{ - closelog_internal (); -} -#endif - static void closelog_internal (void) { diff --git a/sysdeps/unix/sysv/linux/syslog.c b/sysdeps/unix/sysv/linux/syslog.c deleted file mode 100644 index cf8ce23385..0000000000 --- a/sysdeps/unix/sysv/linux/syslog.c +++ /dev/null @@ -1,4 +0,0 @@ -#define NO_SIGPIPE -#define send_flags MSG_NOSIGNAL - -#include