From: "Artem S. Tashkinov" <aros@gmx.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Sasha Levin <sashal@kernel.org>,
stable@vger.kernel.org
Subject: Re: [RFC/PROPOSAL] Shifting the x.y.z Stable Tree to a Continuous, Signed Patch-Stream Model
Date: Sun, 14 Jun 2026 07:49:44 +0000 [thread overview]
Message-ID: <c526fab7-c323-4712-989b-88c4da82a289@gmx.com> (raw)
In-Reply-To: <2026052444-unlawful-eskimo-9c41@gregkh>
On 5/24/26 10:56 AM, Greg Kroah-Hartman wrote:
> On Sun, May 24, 2026 at 01:38:55PM +0400, Artem S. Tashkinov wrote:
>> Hi all,
>>
>> The relentless cadence of critical vulnerability disclosures and public
>> exploits over the past month—including Copy Fail (CVE-2026-31431), Dirty
>> Frag (CVE-2026-43284/500), Fragnesia (CVE-2026-46300), and the ptrace exit
>> race (CVE-2026-46333)—has highlighted a severe structural bottleneck in how
>> we package and distribute stable backports.
>
> Who is "we"?
>
> And there's nothing really "new" here, these issues are all normal,
> remember, we resolve, on average, 13 CVEs a day, most much more severe
> than the ones that happened to get marketing names that you list here
> (and how many systems have untrusted users?)
>
>> When fatal logic flaws or memory corruptions strike core subsystems, our
>> current point-release model fractures. Spinning up whole new point releases
>> (7.0.4, 7.0.5, 7.0.7) in a matter of days just to address incomplete fixes,
>> subsystem regressions, or independent public disclosures (such as the recent
>> GRO managed-frag UAF exploit dropped directly to GitHub gists by
>> researchers) creates massive administrative fatigue for maintainers and
>> downstream teams alike.
>
> it takes just a minute to "spin up" a point release, what is difficult
> about that? If needed, just let us know and we can easily do so.
>
>> Upstream has long maintained that the stable tree is effectively a
>> continuous stream of fixes, and that users should track the tip of the
>> stable branch rather than cherry-picking. It is time our release
>> infrastructure matches this reality.
>>
>> ### The Proposal
>>
>> I propose transitioning the stable tree (`linux-x.y.y`) away from
>> manual,discrete point-release tarballs (`x.y.z`). Instead, we should treat
>> the stable sub-version purely as an append-only, continuous, git-native
>> patch stream.
>
> That's what we do today, we just happen go "jump" on a weekly basis.
>
>> Major releases (e.g., 7.0, 7.1) remain the foundational code boundaries, but
>> sub-versions are eliminated as monolithic manual artifacts.
>>
>> ### The Implementation: How It Works
>>
>> To ensure downstream distributions, enterprise compliance engines, and
>> automated testing rings can still securely ingest code, we can replace the
>> manual tarball with a decoupled, automated asset pipeline:
>>
>> 1. **The Git-First Stream:** The stable branch (`linux-7.0.y`) remains the
>> single source of truth. Commits are pushed as soon as they pass stable
>> criteria and automated sanity testing.
>
> Again, that's what we do today.
>
>> 2. **The Signed Patch-Stream Archive:** Instead of packaging the entire 30M+
>> line source code tree into a new tarball for every quick fix, upstream
>> infrastructure maintains a rolling, cumulative patch sequence for the major
>> cycle:
>>
>> linux-7.0-stable.series = \sum (patch_1 + patch_2 + ... + patch_n)
>>
>> Every time a fix is merged to the stable branch, the patch is appended to a
>> publicly accessible, cryptographically signed manifest file
>> (`linux-7.0-stable-patches.tar.bz2` or a standard `series` file) alongside a
>> detached signature.
>
> Who would use/need such a thing? What's wrong with the 2 systems we
> have today that this would somehow help out with?
>
>> 3. **Automated Snapshot Tags:** If the industry strictly requires an
>> immutable archive for compliance,
>
> What "compliance"?
>
>> point-release numbers can be replaced by
>> automated, time-stamped git tags and machine-generated source snapshots cut
>> on a strict, automated interval (e.g., every 48 hours), removing human
>> maintainers entirely from the release timing.
>
> That's probably not a good idea anyway. Are you doing continous testing
> of the stable queue? If so, great, just take from there today.
> Everyone adds patches on top of releases anyway, what's a few more if it
> happens to resolve specific issues for a day or so before a .y release
> can be cut?
>
>> ### Why This Benefits the Ecosystem
>>
>> * **Eliminates Churn and Latency:**
>>
>> When a patch introduces an edge-case regression or requires an immediate
>> follow-up (a common reason for rapid point-release sequences), maintainers
>> do not need to coordinate a whole new release event.
>
> No real "coordination" happens here.
>
>> The follow-up fix is simply patch $n+1$. Downstream CI pipelines
>> ingest it natively via standard git fetches.
>
> Again, we do that today.
>
>> * **Maintains Git-Native Debugging:**
>>
>> Debugging stable regressions via `git bisect` has always been patch-based,
>> not release-based. Since point releases are meant strictly for backported
>> bug fixes, removing the arbitrary `x.y.z` release tags changes nothing about
>> a developer's ability to isolate a regression. If anything, it prevents
>> downstream vendors from pulling out-of-order patches that complicate
>> bisection across distros.
>
> Who bisects across distros?
>
>> * **Eases Downstream Automation:**
>>
>> Modern tracking distributions (Arch, Fedora snapshotting, etc.) can switch
>> to trunk-based intake, automatically building from the signed tip.
>
> Have you asked them if they need/want this?
>
>> For enterprise distributions (RHEL, Ubuntu LTS) where constant kernel
>> packaging and reboots are untenable,
>
> Why are reboots for these systems untenable? Why not fix that root
> problem instead?
>
>> a fluid patch stream allows vendor
>> security teams to more rapidly feed live-patching infrastructure (`kpatch`,
>> `kgraft`), applying critical CVE fixes directly to runtime memory without
>> changing the base package version.
>
> They can do that today, and do do that today. So again, what distro
> needs this?
>
>> * **Bridges the Compliance Gap:**
>>
>> Embedded, automotive, or medical compliance pipelines
>> that legally require a static, verifiable code artifact can validate their
>> software against the base major release tarball ($7.0.0$) plus the
>> cryptographically signed, append-only stable patch series manifest.
>
> Do they really need that? Again, they can have that today, nothing new
> here.
>
>> The manual compilation, testing, and cutting of sub-version tarballs is an
>> administrative artifact of the late 1990s.
>
> Weekly releases is not an artivact of the 1990s :)
>
>> Shifting to an explicit, signed
>> patch-stream architecture acknowledges the velocity of modern vulnerability
>> research, strips away artificial latency, and frees our stable maintainers
>> to focus on code quality rather than release management overhead.
>
> Again, we have that today, on a weekly basis.
>
> greg k-h
Hi Greg,
I understand completely that from an upstream maintainer perspective,
the current pipeline feels seamless. Running a script to cut a tag takes
a minute, and git-stable is inherently fluid. But looking at the
ecosystem from the downstream and infrastructure side, the view is a bit
different.
Here is where the current model introduces friction that a patch-stream
or automated snapshot approach could solve:
### 1. The Compounding Downstream Tax
When you spin up a rapid sequence like 7.0.4, 7.0.5, and 7.0.7 to
address the immediate fallout of complex CVEs, it takes a minute for
upstream, but it triggers a massive domino effect downstream. Hundreds
of distribution mirrors sync gigabytes of redundant source data, package
maintainers rewrite specs, and automated build farms recreate full
packages. When a fix is incomplete or causes an immediate regression
requiring a follow-up version 48 hours later, that entire global compute
and human cycle repeats for what amounts to a few lines of diff.
### 2. The Infrastructure Reality of Reboots
You mentioned that systems should just be fixed so reboots aren't
untenable. In an ideal architectural world, yes. But in production
reality, orchestrating reboots across thousands of live cloud nodes
running high-availability workloads carries immense risk and scheduling
overhead.
Enterprise distros absolutely do use live-patching (`kpatch`/`kgraft`)
to mitigate this, but tracking a shifting landscape of discrete
point-release tarballs complicates their internal backport verification.
A continuous, signed patch-stream would give vendor security teams a
clean, linear ledger of upstream-approved deltas to feed directly into
live-patch compilation engines without the noise of full tree packaging.
### 3. Archive Bloat on the Mirror Network
Every stable point release requires a new ~130MB `.tar.xz` full source
archive. Multiplying that across multiple active LTS branches, dozens of
point releases, and hundreds of worldwide mirrors results in massive
data duplication just to distribute a cumulative handful of text diffs.
The ecosystem is essentially re-shipping the entire ocean every time we
need to add a cup of water.
### Why the Proposal Matters
When independent researchers drop working exploit primitives directly to
public gists (like the recent GRO managed-frag UAF), the turnaround time
to protected production systems needs to be near-zero.
The proposal wasn't meant to imply that the stable team isn't working
fast enough—you guys are incredibly fast. It was an observation that the
*delivery mechanism* (the discrete, human-timed tarball) forces
downstream consumers to choose between packaging fatigue or artificial
patch latency. Shifting the sub-version boundary to a machine-managed,
append-only signed patch stream bridges that gap.
I know you have a workflow that works for **you**, and I respect the
hell out of the massive volume of fixes you ship daily. I just wanted to
share the perspective of how that weekly "jump" ripples out to the
people who have to deploy it.
### Truly Massive Distro Churn Issue
There's also a very important downstream packaging issue that I think
the current stable-kernel release model underestimates.
Debian and Ubuntu already diverge from the upstream stable versioning
model in a useful way: they package kernels around their own ABI
versioning. In practice, this means they can often ship fixes without
forcing users to install an entirely new `/lib/modules/<kernel-version>`
tree every time an upstream stable micro-release appears. A new
ABI/package line is only needed when the kernel ABI they expose to
packaged or out-of-tree modules changes.
That model is a major downstream advantage. It avoids needless module
churn, avoids retaining multiple near-identical kernel trees, and makes
security/regression updates cheaper to ship. ABI-breaking changes do
happen, but in stable kernels they are rare enough that treating them as
exceptional events is perfectly reasonable.
My proposal takes this idea further.
Stable kernel releases frequently contain important fixes for
regressions introduced either in `.0` releases or in earlier stable
updates. But the current release cadence means that downstream
distributions often have to react before the next stable point release
exists. They either wait, leaving users exposed to known regressions, or
they cherry-pick individual commits from the stable queue. That creates
avoidable work: maintainers have to select fixes, update packaging
metadata, rebuild, test, and publish a distro-specific kernel update
that is supposed to correspond to a “stable” upstream series.
Fedora’s 7.0 cycle is a good example of the downstream churn this
creates: multiple downstream updates may be needed for what is logically
the same upstream stable series, simply because important fixes land
between formal stable releases.
Under the model I am proposing, stable would be treated less like a
sequence of isolated point releases and more like a continuously
updated, signed stable branch. Distributions could pin a specific signed
stable commit and trigger a rebuild from that point, instead of
maintaining their own ad hoc selection of fixes while waiting for the
next point release.
This would not remove the need for distro testing or for avoiding
known-bad commits. But in the common case it would simplify the workflow
enormously: downstreams would consume the stable branch directly,
rebuild from a known commit, and get all accepted stable fixes together.
Only in rare cases would they need to temporarily blacklist or revert a
problematic stable commit.
That is still much easier than every distribution independently deciding
which urgent fixes to cherry-pick from the stable queue.
The end result would be less downstream packaging churn, faster delivery
of regression fixes, fewer distro-specific stable-kernel deltas, and a
model that better reflects how many downstreams already consume stable
kernels in practice.
Best regards,
Artem
next prev parent reply other threads:[~2026-06-14 7:49 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-24 9:38 Artem S. Tashkinov
2026-05-24 10:56 ` Greg Kroah-Hartman
2026-05-25 0:33 ` Theodore Tso
2026-06-14 7:49 ` Artem S. Tashkinov [this message]
2026-06-14 8:16 ` Artem S. Tashkinov
2026-06-14 9:33 ` Willy Tarreau
2026-06-14 11:19 ` Greg Kroah-Hartman
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=c526fab7-c323-4712-989b-88c4da82a289@gmx.com \
--to=aros@gmx.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®