lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170425173928.gaubfmxxbbvglnio@cedar>
Date:   Tue, 25 Apr 2017 18:39:28 +0100
From:   Jamie Iles <jamie.iles@...cle.com>
To:     Oleg Nesterov <oleg@...hat.com>, linux-kernel@...r.kernel.org
Subject: SIGNAL_UNKILLABLE and init again

Hi Oleg,

I'm back looking at SIGNAL_UNKILLABLE and debugging child reapers again, 
and the current issue is when running code in the target process, 
SIGTRAP firing and that causing SIGNAL_UNKILLABLE protection to be 
removed in force_sig_info():

	if (action->sa.sa_handler == SIG_DFL)
		t->signal->flags &= ~SIGNAL_UNKILLABLE;

Would relaxing that if the task is being traced with something like

  diff --git i/kernel/signal.c w/kernel/signal.c
  index 7e59ebc2c25e..f701f1889895 100644
  --- i/kernel/signal.c
  +++ w/kernel/signal.c
  @@ -1185,7 +1185,7 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
   			recalc_sigpending_and_wake(t);
   		}
   	}
  -	if (action->sa.sa_handler == SIG_DFL)
  +	if (action->sa.sa_handler == SIG_DFL && !t->ptrace)
   		t->signal->flags &= ~SIGNAL_UNKILLABLE;
   	ret = specific_send_sig_info(sig, info, t);
   	spin_unlock_irqrestore(&t->sighand->siglock, flags);

make any sense?  It does address the issue that I'm seeing, but are 
there any downsides to doing so?

Thanks,

Jamie

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ