qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PULL 18/42] checkpatch: should not use signal except for SIG_DFL or SIG_IGN
Date: Wed,  5 Jul 2017 09:14:21 +0200	[thread overview]
Message-ID: <1499238885-26161-19-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1499238885-26161-1-git-send-email-pbonzini@redhat.com>

Using signal to establish a signal handler is not portable; on
SysV systems, the signal handler would be reset to SIG_DFL after
delivery, while BSD preserves the signal handler.  Daniel Berrange
reported that (to complicate matters further) the signal system call
has SysV behavior, but glibc signal() actually calls the sigaction
system call to provide BSD behavior.

However, using signal() to set a signal's disposition to SIG_DFL
or SIG_IGN is portable and is a relatively common occurrence in
QEMU source code, so allow that.

Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 scripts/checkpatch.pl | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 45027b9..73efc92 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2473,6 +2473,10 @@ sub process {
 		if ($line =~ /\b(strto[^kd].*?)\s*\(/) {
 			ERROR("consider using qemu_$1 in preference to $1\n" . $herecurr);
 		}
+# recommend sigaction over signal for portability, when establishing a handler
+		if ($line =~ /\bsignal\s*\(/ && !($line =~ /SIG_(?:IGN|DFL)/)) {
+			ERROR("use sigaction to establish signal handlers; signal is not portable\n" . $herecurr);
+		}
 # check for module_init(), use category-specific init macros explicitly please
 		if ($line =~ /^module_init\s*\(/) {
 			ERROR("please use block_init(), type_init() etc. instead of module_init()\n" . $herecurr);
-- 
1.8.3.1

  parent reply	other threads:[~2017-07-05  7:15 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-05  7:14 [Qemu-devel] [PULL 00/42] Misc changes for 2017-07-05 Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 01/42] vcpu_dirty: share the same field in CPUState for all accelerators Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 02/42] qemu-doc: Add missing "@c man end" statements Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 03/42] nbd: fix NBD over TLS Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 04/42] target/i386: fix interrupt CPL error when using ist in x86-64 Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 05/42] target/i386: simplify handling of conforming code segments on interrupt Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 06/42] include/exec/poison: Add some more missing TARGET and CONFIG defines Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 07/42] Move CONFIG_KVM related definitions to kvm_i386.h Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 08/42] include/exec/poison: Mark CONFIG_KVM as poisoned, too Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 09/42] cpu: Introduce a wrapper for tlb_flush() that can be used in common code Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 10/42] include/exec/poison: Mark CONFIG_SOFTMMU as poisoned Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 11/42] Makefile: Move bootdevice.o to common-obj-y Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 12/42] hw/misc/edu: Compile the edu device as common object Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 13/42] sockets: avoid formatting buffer that may not be NUL terminated Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 14/42] xsave_helper: pull xsave and xrstor out of kvm.c into helper function Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 15/42] util/oslib-win32: Remove if conditional Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 16/42] tests/test-char.c: Don't use main_loop_wait()'s return value Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 17/42] main_loop: Make main_loop_wait() return void Paolo Bonzini
2017-07-05  7:14 ` Paolo Bonzini [this message]
2017-07-05  7:14 ` [Qemu-devel] [PULL 19/42] virtio-scsi: finalize IOMMU support Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 20/42] qemu-thread: Assert locks are initialized before using Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 21/42] qemu-doc: do not refer to years-old version numbers Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 22/42] configure: factor out list of supported Xen/KVM/HAX targets Paolo Bonzini
2017-07-10 15:49   ` Peter Maydell
2017-07-10 16:14     ` Paolo Bonzini
2017-07-10 16:24       ` Peter Maydell
2017-07-10 16:28         ` Paolo Bonzini
2017-07-14 15:26           ` Philippe Mathieu-Daudé
2017-07-14 16:58             ` Paolo Bonzini
2017-07-12  0:24         ` Stefano Stabellini
2017-07-10 16:29     ` Anthony PERARD
2017-07-05  7:14 ` [Qemu-devel] [PULL 23/42] configure: early test for supported targets Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 24/42] configure: add --disable-tcg configure option Paolo Bonzini
2017-07-14  5:24   ` Philippe Mathieu-Daudé
2017-07-14  9:02     ` Paolo Bonzini
2017-07-14 15:33       ` Philippe Mathieu-Daudé
2017-07-05  7:14 ` [Qemu-devel] [PULL 25/42] vl: convert -tb-size to qemu_strtoul Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 26/42] vl: add tcg_enabled() for tcg related code Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 27/42] tcg: move page_size_init() function Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 28/42] cpu: move interrupt handling out of translate-common.c Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 29/42] tcg: make tcg_allowed global Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 30/42] monitor: disable "info jit" and "info opcount" if !TCG Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 31/42] vapic: use tcg_enabled Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 32/42] tcg: add the tcg-stub.c file into accel/stubs/ Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 33/42] tcg: move tb_lock out of translate-all.h Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 34/42] exec: elide calls to tb_lock and tb_unlock Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 35/42] tcg: add CONFIG_TCG guards in headers Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 36/42] tcg: add the CONFIG_TCG into Makefiles Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 37/42] target/i386: move cpu_sync_bndcs_hflags() function Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 38/42] target/i386: make cpu_get_fp80()/cpu_set_fp80() static Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 39/42] target/i386: split cpu_set_mxcsr() and make cpu_set_fpuc() inline Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 40/42] target/i386: move TLB refill function out of helper.c Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 41/42] target/i386: add the tcg_enabled() in target/i386/ Paolo Bonzini
2017-07-05  7:14 ` [Qemu-devel] [PULL 42/42] target/i386: add the CONFIG_TCG into Makefiles Paolo Bonzini
2017-07-06 10:42 ` [Qemu-devel] [PULL 00/42] Misc changes for 2017-07-05 Peter Maydell
2017-07-06 14:01 ` no-reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1499238885-26161-19-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).