From: Jeff Layton <jlayton@kernel.org>
To: Oleg Nesterov <oleg@redhat.com>,
w15303746062@163.com, David Laight <david.laight.linux@gmail.com>
Cc: chuck.lever@oracle.com, viro@zeniv.linux.org.uk,
brauner@kernel.org, alex.aring@gmail.com, jack@suse.cz,
linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
Mingyu Wang <25181214217@stu.xidian.edu.cn>
Subject: Re: [PATCH v2] fs/fcntl: fix SOFTIRQ-unsafe lock order in fasync signaling
Date: Mon, 12 Oct 2026 07:59:20 -0400 [thread overview]
Message-ID: <73b5a5174d98a3ae1dada32684e453debb8dfcd3.camel@kernel.org> (raw)
In-Reply-To: <asuxzwl4iWjjEjRD@redhat.com>
On Sun, 2026-10-11 at 17:57 +0200, Oleg Nesterov wrote:
> Nobody replied ;)
>
> In case it was not clear, I believe the commit 00633c4683828
> ("fs/fcntl: fix SOFTIRQ-unsafe lock order in fasync signaling")
> backported to stable trees is wrong.
>
> Right now the fix is not clear to me, I don't even fully understand
> the changelog:
>
> The deadlock is caused by the rwlock writer fairness mechanism:
> 1. CPU 0 (process context) holds read_lock(&tasklist_lock) in do_wait().
> 2. CPU 1 (process context) attempts write_lock(&tasklist_lock) in
> fork() or exit() and spins, which blocks all new readers.
>
> see below ...
>
> 3. CPU 0 is interrupted by a softirq (e.g., TCP URG packet reception).
> 4. The softirq calls send_sigurg() and attempts to acquire
> read_lock(&tasklist_lock), deadlocking because CPU 1 is waiting.
>
> but queued_read_lock_slowpath() does not block the reader if
> in_interrupt() == T ?
>
> Mingyu, could you provide more details? How was this problem reported?
>
> So far I only sent the doc patch to explain that we can't simply avoid tasklist:
>
> [PATCH] pid: document that do_each_pid_task() needs tasklist_lock
> https://lore.kernel.org/all/asuaU8H_5MbO3-cW@redhat.com/
>
> Oleg.
>
FYI, I took a closer look, and I think Oleg is correct.
When I reviewed this, I missed the fact that the rcu_read_lock() isn't
sufficient to stabilize the do_each_pid_task() walk. We probably should
revert this patch for now, until the problem and potential solution are
more clear.
--
Jeff Layton <jlayton@kernel.org>
next prev parent reply other threads:[~2026-10-12 11:59 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-23 8:02 [PATCH] fs/fcntl: fix SOFTIRQ-unsafe lock order in send_sigio() w15303746062
2026-05-23 11:08 ` Jeff Layton
2026-05-23 13:52 ` [PATCH v2] fs/fcntl: fix SOFTIRQ-unsafe lock order in fasync signaling w15303746062
2026-05-28 12:40 ` Christian Brauner
2026-10-04 11:31 ` Oleg Nesterov
2026-10-11 15:57 ` Oleg Nesterov
2026-10-12 1:42 ` Mingyu Wang
2026-10-12 15:39 ` Oleg Nesterov
2026-10-12 16:00 ` Mingyu Wang
2026-10-12 16:29 ` Oleg Nesterov
2026-10-12 17:33 ` Oleg Nesterov
2026-10-13 1:36 ` Mingyu Wang
2026-10-12 11:59 ` Jeff Layton [this message]
2026-10-12 15:15 ` Oleg Nesterov
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=73b5a5174d98a3ae1dada32684e453debb8dfcd3.camel@kernel.org \
--to=jlayton@kernel.org \
--cc=25181214217@stu.xidian.edu.cn \
--cc=alex.aring@gmail.com \
--cc=brauner@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=david.laight.linux@gmail.com \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=viro@zeniv.linux.org.uk \
--cc=w15303746062@163.com \
/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.