All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Eric W. Biederman" <ebiederm@xmission.com>
To: Christian Brauner <brauner@kernel.org>
Cc: Oleg Nesterov <oleg@redhat.com>,
	 Andrew Morton <akpm@linux-foundation.org>,
	 Andy Lutomirski <luto@kernel.org>,  Kees Cook <kees@kernel.org>,
	 Kusaram Devineni <kusaram@devineni.in>,
	 Peter Zijlstra <peterz@infradead.org>,
	 Thomas Gleixner <tglx@kernel.org>,
	 Will Drewry <wad@chromium.org>,
	 linux-kernel@vger.kernel.org,
	 Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH 0/11] Short circuit delivery for coredump signals
Date: Mon, 06 Jul 2026 07:30:34 -0500	[thread overview]
Message-ID: <87ik6sxpud.fsf@email.froward.int.ebiederm.org> (raw)
In-Reply-To: <20260706-empathie-titan-verordnen-a4b2eb651f8e@brauner> (Christian Brauner's message of "Mon, 06 Jul 2026 11:21:44 +0200")

Christian Brauner <brauner@kernel.org> writes:

> On 2026-07-05 17:54 +0200, Oleg Nesterov wrote:
>> On 07/03, Eric W. Biederman wrote:
>> >
>> > Oleg Nesterov <oleg@redhat.com> writes:
>> >
>> > > Yes, the coredumping process is not dead. Yet. It can do a lot of activity
>> > > and use a lot of resources.
>> >
>> > It is semantically dead.  Pragmatically I completely agree.
>> >
>> > >> Do you know of something where userspace actually depends upon
>> > >> killing a coredump before it even starts?
>> > >
>> > > Well. I think a user has all rights to assume that SIGKILL must always
>> > > terminate the process asap, the process killed by SIGKILL must not start
>> > > the coredumping.
>
> I agree and that's not an acceptable regression especially given how
> sensitive this codepath is.

Regression????

The process is already dead.  It has already been sent a fatal signal.
The fatal signal has already been accepted for delivery.

The process is already in a state where fatal_signal_pending returns
true.

Accepting a signal at this point is arguably in violation of POSIX
and the reasonable expectation of many programmers.

When we allowed such signals to abort PTRACE_EVENT_EXIT it was
practically impossible for userspace programmers to deal with.  So this
does not even generalize beyond the point of a coredump.

The window Oleg is talking about is so small I don't know if you can
actually write a test program to hit it.

Even a process that executes.
	pid_t target = xxxx;
	kill(target, SIGSEGV);
	kill(target, SIGKILL);
Has a reasonable chance of the coredump starting before the SIGKILL is
sent.
        
The only use for accepting SIGKILL at that point is the very special
case that a coredump is taking too long and we have no other means of
aborting the coredump.

The code today does not work by design.  It works by happenstance.  The
code runs a very strong risk of violating invariants in the code.  With
the attendant risk of worse problems elsewhere.



There is a use for dealing with SIGKILL in this situation.

I am happy for a nuanced discussion here.

Labeling something a regression when there is no code shown to care
is inconsistent when the kernel's no-regression rule.



There are huge deficits in the signal handling code and the kernel
because coredumps shutdown the process in a separate code path from
ordinary shutdown.  Most immediate is that sending SIGSEGV or any other
coredump causing signal to a process today, when that signal's handler
is SIG_DLF does not immediately cause the process start shutting down.
Which can be something of a DOS on the current system.

There are a lot of code paths that go through a lot of hoops because
that shutdown does not get started immediately.  With the result
that we have some hoops.

So please let's review and discuss the code I posted, and not get
side-tracked.


Eric










  reply	other threads:[~2026-07-06 12:30 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-19 13:27 [PATCH v2 1/3] signal: change force_sig_info_to_task() to call __send_signal_locked() Oleg Nesterov
2026-06-19 13:27 ` [PATCH v2 2/3] signal: turn the "bool force" arg of __send_signal_locked() into "int flags" Oleg Nesterov
2026-07-06 13:23   ` Bradley Morgan
2026-06-19 13:28 ` [PATCH v2 3/3] signal: fix evasion of SA_IMMUTABLE signals Oleg Nesterov
2026-07-06 13:23   ` Bradley Morgan
2026-06-26 16:52 ` [PATCH 0/11] Short circuit delivery for coredump signals Eric W. Biederman
2026-06-26 16:54   ` [PATCH 01/11] signal: Compute the exit_code in get_signal Eric W. Biederman
2026-06-26 16:54   ` [PATCH 02/11] signal: In get_signal call do_exit when it is unnecessary to shoot down threads Eric W. Biederman
2026-06-26 16:55   ` [PATCH 03/11] signal: Bring down all threads when handling a non-coredump fatal signal Eric W. Biederman
2026-06-26 16:55   ` [PATCH 04/11] signal: Move stopping for the coredump from do_exit into get_signal Eric W. Biederman
2026-06-26 16:56   ` [PATCH 05/11] signal: Move audit_core_dumps from do_coredump " Eric W. Biederman
2026-06-26 16:57   ` [PATCH 06/11] coredump: In zap_threads complete startup if there is no need to wait Eric W. Biederman
2026-06-26 16:57   ` [PATCH 07/11] signal: Use the thread killing in get_signal for coredumps Eric W. Biederman
2026-06-26 16:58   ` [PATCH 08/11] exit: Make do_group_exit static Eric W. Biederman
2026-06-26 16:59   ` [PATCH 09/11] signal: Dequeue fatal signals Eric W. Biederman
2026-06-26 16:59   ` [PATCH 10/11] signal: Short circuit deliver coredump signals Eric W. Biederman
2026-06-26 17:00   ` [PATCH 11/11] signal: Remove SA_IMMUTABLE Eric W. Biederman
2026-06-28 14:29   ` [PATCH 0/11] Short circuit delivery for coredump signals Oleg Nesterov
2026-06-29  6:22     ` Eric W. Biederman
2026-06-29 17:45       ` Eric W. Biederman
2026-07-02 10:36         ` Oleg Nesterov
2026-07-03 20:16           ` Eric W. Biederman
2026-07-05 15:54             ` Oleg Nesterov
2026-07-06  9:21               ` Christian Brauner
2026-07-06 12:30                 ` Eric W. Biederman [this message]
2026-07-06 15:58                   ` Christian Brauner
2026-07-03 21:35       ` [PATCH v2 00/14] " Eric W. Biederman
2026-07-03 21:36         ` [PATCH 01/14] signal: Generalize posixtimer_queue_sigqueue into enqueue_signal Eric W. Biederman
2026-07-06 12:54           ` Bradley Morgan
2026-07-03 21:37         ` [PATCH 02/14] signal: Factor out sig_blocked from sig_ignored Eric W. Biederman
2026-07-06 13:01           ` Bradley Morgan
2026-07-03 21:37         ` [PATCH 03/14] signal: More accurate ignoring of signals based on sig_can_short_circuit Eric W. Biederman
2026-07-06 13:02           ` Bradley Morgan
2026-07-03 21:38         ` [PATCH 04/14] signal: Use sig_can_short_circuit to improve fatal signal delivery Eric W. Biederman
2026-07-06 13:03           ` Bradley Morgan
2026-07-03 21:39         ` [PATCH 05/14] signal: Compute the exit_code in get_signal Eric W. Biederman
2026-07-06 13:03           ` Bradley Morgan
2026-07-03 21:39         ` Eric W. Biederman
2026-07-03 21:40         ` [PATCH 06/14] signal: In get_signal call do_exit when it is unnecessary to shoot down threads Eric W. Biederman
2026-07-06 13:04           ` Bradley Morgan
2026-07-03 21:40         ` [PATCH 07/14] signal: Bring down all threads when handling a non-coredump fatal signal Eric W. Biederman
2026-07-06 13:05           ` Bradley Morgan
2026-07-03 21:41         ` [PATCH 08/14] signal: Move stopping for the coredump from do_exit into get_signal Eric W. Biederman
2026-07-06 13:08           ` Bradley Morgan
2026-07-03 21:41         ` [PATCH 09/14] signal: Move audit_core_dumps from do_coredump " Eric W. Biederman
2026-07-06 13:08           ` Bradley Morgan
2026-07-03 21:42         ` [PATCH 10/14] coredump: In zap_threads complete startup if there is no need to wait Eric W. Biederman
2026-07-06 13:09           ` Bradley Morgan
2026-07-03 21:43         ` [PATCH 11/14] signal: Use the thread killing in get_signal for coredumps Eric W. Biederman
2026-07-06 13:13           ` Bradley Morgan
2026-07-03 21:43         ` [PATCH 12/14] exit: Make do_group_exit static Eric W. Biederman
2026-07-06 13:14           ` Bradley Morgan
2026-07-03 21:44         ` [PATCH 13/14] signal: Dequeue fatal signals Eric W. Biederman
2026-07-06 13:16           ` Bradley Morgan
2026-07-03 21:44         ` [PATCH 14/14] signal: Short circuit deliver coredump signals Eric W. Biederman
2026-07-06 13:17           ` Bradley Morgan
2026-07-06 13:18     ` [PATCH 0/11] Short circuit delivery for " Bradley Morgan
2026-07-06 13:23 ` [PATCH v2 1/3] signal: change force_sig_info_to_task() to call __send_signal_locked() Bradley Morgan

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=87ik6sxpud.fsf@email.froward.int.ebiederm.org \
    --to=ebiederm@xmission.com \
    --cc=akpm@linux-foundation.org \
    --cc=brauner@kernel.org \
    --cc=kees@kernel.org \
    --cc=kusaram@devineni.in \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=wad@chromium.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.