[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] checkpatch: should not use signal except for SI
From: |
Richard W.M. Jones |
Subject: |
Re: [Qemu-devel] [PATCH] checkpatch: should not use signal except for SIG_DFL or SIG_IGN |
Date: |
Tue, 4 Jul 2017 10:40:49 +0100 |
User-agent: |
Mutt/1.5.20 (2009-12-10) |
On Tue, Jul 04, 2017 at 11:27:04AM +0200, Paolo Bonzini wrote:
> 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.
>
> Signed-off-by: Paolo Bonzini <address@hidden>
This looks good. Ignore the parallel version which I just sent :-(
Reviewed-by: Richard W.M. Jones <address@hidden>
Rich.
> scripts/checkpatch.pl | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 45027b9281..73efc927a9 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);
> --
> 2.13.0
>
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v