From: Jinchao Wang <wangjinchao600@gmail.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: "Andrew Morton" <akpm@linux-foundation.org>,
"Masami Hiramatsu (Google)" <mhiramat@kernel.org>,
"Peter Zijlstra" <peterz@infradead.org>,
"Randy Dunlap" <rdunlap@infradead.org>,
"Marco Elver" <elver@google.com>,
"Mike Rapoport" <rppt@kernel.org>,
"Alexander Potapenko" <glider@google.com>,
"Adrian Hunter" <adrian.hunter@intel.com>,
"Alexander Shishkin" <alexander.shishkin@linux.intel.com>,
"Alice Ryhl" <aliceryhl@google.com>,
"Andrey Konovalov" <andreyknvl@gmail.com>,
"Andrey Ryabinin" <ryabinin.a.a@gmail.com>,
"Andrii Nakryiko" <andrii@kernel.org>,
"Ard Biesheuvel" <ardb@kernel.org>,
"Arnaldo Carvalho de Melo" <acme@kernel.org>,
"Ben Segall" <bsegall@google.com>,
"Bill Wendling" <morbo@google.com>,
"Borislav Petkov" <bp@alien8.de>,
"Catalin Marinas" <catalin.marinas@arm.com>,
"Dave Hansen" <dave.hansen@linux.intel.com>,
"David Hildenbrand" <david@redhat.com>,
"David Kaplan" <david.kaplan@amd.com>,
"David S. Miller" <davem@davemloft.net>,
"Dietmar Eggemann" <dietmar.eggemann@arm.com>,
"Dmitry Vyukov" <dvyukov@google.com>,
"H. Peter Anvin" <hpa@zytor.com>,
"Ian Rogers" <irogers@google.com>,
"Ingo Molnar" <mingo@redhat.com>,
"James Clark" <james.clark@linaro.org>,
"Jinjie Ruan" <ruanjinjie@huawei.com>,
"Jiri Olsa" <jolsa@kernel.org>,
"Jonathan Corbet" <corbet@lwn.net>,
"Juri Lelli" <juri.lelli@redhat.com>,
"Justin Stitt" <justinstitt@google.com>,
kasan-dev@googlegroups.com, "Kees Cook" <kees@kernel.org>,
"Liam R. Howlett" <Liam.Howlett@oracle.com>,
"Liang Kan" <kan.liang@linux.intel.com>,
"Linus Walleij" <linus.walleij@linaro.org>,
linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
linux-perf-users@vger.kernel.org,
linux-trace-kernel@vger.kernel.org, llvm@lists.linux.dev,
"Lorenzo Stoakes" <lorenzo.stoakes@oracle.com>,
"Mark Rutland" <mark.rutland@arm.com>,
"Masahiro Yamada" <masahiroy@kernel.org>,
"Mathieu Desnoyers" <mathieu.desnoyers@efficios.com>,
"Mel Gorman" <mgorman@suse.de>, "Michal Hocko" <mhocko@suse.com>,
"Miguel Ojeda" <ojeda@kernel.org>,
"Nam Cao" <namcao@linutronix.de>,
"Namhyung Kim" <namhyung@kernel.org>,
"Nathan Chancellor" <nathan@kernel.org>,
"Naveen N Rao" <naveen@kernel.org>,
"Nick Desaulniers" <nick.desaulniers+lkml@gmail.com>,
"Rong Xu" <xur@google.com>,
"Sami Tolvanen" <samitolvanen@google.com>,
"Steven Rostedt" <rostedt@goodmis.org>,
"Suren Baghdasaryan" <surenb@google.com>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Thomas Weißschuh" <thomas.weissschuh@linutronix.de>,
"Valentin Schneider" <vschneid@redhat.com>,
"Vincent Guittot" <vincent.guittot@linaro.org>,
"Vincenzo Frascino" <vincenzo.frascino@arm.com>,
"Vlastimil Babka" <vbabka@suse.cz>,
"Will Deacon" <will@kernel.org>,
workflows@vger.kernel.org, x86@kernel.org
Subject: Re: [PATCH v8 00/27] mm/ksw: Introduce KStackWatch debugging tool
Date: Wed, 12 Nov 2025 10:14:29 +0800 [thread overview]
Message-ID: <aRLmGxKVvfl5N792@ndev> (raw)
In-Reply-To: <aRIh4pBs7KCDhQOp@casper.infradead.org>
On Mon, Nov 10, 2025 at 05:33:22PM +0000, Matthew Wilcox wrote:
> On Tue, Nov 11, 2025 at 12:35:55AM +0800, Jinchao Wang wrote:
> > Earlier this year, I debugged a stack corruption panic that revealed the
> > limitations of existing debugging tools. The bug persisted for 739 days
> > before being fixed (CVE-2025-22036), and my reproduction scenario
> > differed from the CVE report—highlighting how unpredictably these bugs
> > manifest.
>
> Well, this demonstrates the dangers of keeping this problem siloed
> within your own exfat group. The fix made in 1bb7ff4204b6 is wrong!
> It was fixed properly in 7375f22495e7 which lists its Fixes: as
> Linux-2.6.12-rc2, but that's simply the beginning of git history.
> It's actually been there since v2.4.6.4 where it's documented as simply:
>
> - some subtle fs/buffer.c race conditions (Andrew Morton, me)
>
> As far as I can tell the changes made in 1bb7ff4204b6 should be
> reverted.
Thank you for the correction and the detailed history. I wasn't aware this
dated back to v2.4.6.4. I'm not part of the exfat group; I simply
encountered a bug that 1bb7ff4204b6 happened to resolve in my scenario.
The timeline actually illustrates the exact problem KStackWatch addresses:
a bug introduced in 2001, partially addressed in 2025, then properly fixed
months later. The 24-year gap suggests these silent stack corruptions are
extremely difficult to locate.
>
> > Initially, I enabled KASAN, but the bug did not reproduce. Reviewing the
> > code in __blk_flush_plug(), I found it difficult to trace all logic
> > paths due to indirect function calls through function pointers.
>
> So why is the solution here not simply to fix KASAN instead of this
> giant patch series?
KASAN caught 7375f22495e7 because put_bh() accessed bh->b_count after
wait_on_buffer() of another thread returned—the stack was invalid.
In 1bb7ff4204b6 and my case, corruption occurred before the victim
function of another thread returned. The stack remained valid to KASAN,
so no warning triggered. This is timing-dependent, not a KASAN deficiency.
Making KASAN treat parts of active stack frame as invalid would be
complex and add significant overhead, likely worsening the reproduction
prevention issue. KASAN's overhead already prevented reproduction in my
environment.
KStackWatch takes a different approach: it watches stack frame regardless
of whether KASAN considers them valid or invalid, with much less overhead
thereby preserving reproduction scenarios.
The value proposition:
Finding where corruption occurs is the bottleneck. Once located,
subsystem experts can analyze the root cause. Without that location, even
experts are stuck.
If KStackWatch had existed earlier, this 24-year-old bug might have been
found sooner when someone hit a similar corruption. The same applies to
other stack corruption bugs.
I'd appreciate your thoughts on whether this addresses your concerns.
Best regards,
Jinchao
next prev parent reply other threads:[~2025-11-12 2:14 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-10 16:35 [PATCH v8 00/27] mm/ksw: Introduce KStackWatch debugging tool Jinchao Wang
2025-11-10 16:35 ` [PATCH v8 01/27] x86/hw_breakpoint: Unify breakpoint install/uninstall Jinchao Wang
2025-11-10 16:35 ` [PATCH v8 02/27] x86/hw_breakpoint: Add arch_reinstall_hw_breakpoint Jinchao Wang
2025-11-10 16:35 ` [PATCH v8 03/27] HWBP: Add modify_wide_hw_breakpoint_local() API Jinchao Wang
2025-11-10 16:35 ` [PATCH v8 04/27] mm/ksw: add build system support Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 05/27] mm/ksw: add ksw_config struct and parser Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 06/27] mm/ksw: add singleton debugfs interface Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 07/27] mm/ksw: add HWBP pre-allocation Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 08/27] mm/ksw: Add atomic watchpoint management api Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 09/27] mm/ksw: ignore false positives from exit trampolines Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 10/27] mm/ksw: support CPU hotplug Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 11/27] sched/ksw: add per-task context Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 12/27] mm/ksw: add entry kprobe and exit fprobe management Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 13/27] mm/ksw: add per-task ctx tracking Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 14/27] mm/ksw: resolve stack watch addr and len Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 15/27] mm/ksw: limit canary search to current stack frame Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 16/27] mm/ksw: manage probe and HWBP lifecycle via procfs Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 17/27] mm/ksw: add KSTACKWATCH_PROFILING to measure probe cost Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 18/27] arm64/hw_breakpoint: Add arch_reinstall_hw_breakpoint Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 19/27] arm64/hwbp/ksw: integrate KStackWatch handler support Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 20/27] mm/ksw: add self-debug helpers Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 21/27] mm/ksw: add test module Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 22/27] mm/ksw: add stack overflow test Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 23/27] mm/ksw: add recursive depth test Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 24/27] mm/ksw: add multi-thread corruption test cases Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 25/27] tools/ksw: add arch-specific test script Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 26/27] docs: add KStackWatch document Jinchao Wang
2025-11-10 16:36 ` [PATCH v8 27/27] MAINTAINERS: add entry for KStackWatch Jinchao Wang
2025-11-10 17:33 ` [PATCH v8 00/27] mm/ksw: Introduce KStackWatch debugging tool Matthew Wilcox
2025-11-12 2:14 ` Jinchao Wang [this message]
2025-11-12 20:36 ` Matthew Wilcox
2025-11-13 4:40 ` Jinchao Wang
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=aRLmGxKVvfl5N792@ndev \
--to=wangjinchao600@gmail.com \
--cc=Liam.Howlett@oracle.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=akpm@linux-foundation.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=aliceryhl@google.com \
--cc=andreyknvl@gmail.com \
--cc=andrii@kernel.org \
--cc=ardb@kernel.org \
--cc=bp@alien8.de \
--cc=bsegall@google.com \
--cc=catalin.marinas@arm.com \
--cc=corbet@lwn.net \
--cc=dave.hansen@linux.intel.com \
--cc=davem@davemloft.net \
--cc=david.kaplan@amd.com \
--cc=david@redhat.com \
--cc=dietmar.eggemann@arm.com \
--cc=dvyukov@google.com \
--cc=elver@google.com \
--cc=glider@google.com \
--cc=hpa@zytor.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=juri.lelli@redhat.com \
--cc=justinstitt@google.com \
--cc=kan.liang@linux.intel.com \
--cc=kasan-dev@googlegroups.com \
--cc=kees@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=lorenzo.stoakes@oracle.com \
--cc=mark.rutland@arm.com \
--cc=masahiroy@kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mgorman@suse.de \
--cc=mhiramat@kernel.org \
--cc=mhocko@suse.com \
--cc=mingo@redhat.com \
--cc=morbo@google.com \
--cc=namcao@linutronix.de \
--cc=namhyung@kernel.org \
--cc=nathan@kernel.org \
--cc=naveen@kernel.org \
--cc=nick.desaulniers+lkml@gmail.com \
--cc=ojeda@kernel.org \
--cc=peterz@infradead.org \
--cc=rdunlap@infradead.org \
--cc=rostedt@goodmis.org \
--cc=rppt@kernel.org \
--cc=ruanjinjie@huawei.com \
--cc=ryabinin.a.a@gmail.com \
--cc=samitolvanen@google.com \
--cc=surenb@google.com \
--cc=tglx@linutronix.de \
--cc=thomas.weissschuh@linutronix.de \
--cc=vbabka@suse.cz \
--cc=vincent.guittot@linaro.org \
--cc=vincenzo.frascino@arm.com \
--cc=vschneid@redhat.com \
--cc=will@kernel.org \
--cc=willy@infradead.org \
--cc=workflows@vger.kernel.org \
--cc=x86@kernel.org \
--cc=xur@google.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 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).