Skip to content

[ciq-6.18.y-next] Multiple patches tested (100 commits) - #1610

Open
ciq-kernel-automation[bot] wants to merge 131 commits into
ciq-6.18.y-nextfrom
{automation_tmp}_ciq-6.18.y-next
Open

ciq-kernel-automation[bot] wants to merge 131 commits into
ciq-6.18.y-nextfrom
{automation_tmp}_ciq-6.18.y-next

Conversation

@ciq-kernel-automation

Copy link
Copy Markdown

Summary

This PR has been automatically created after successful completion of all CI stages.

Commit Message(s)

Bundle bindgen-cli from source for Rocky 9.6 builds

The bindgen tool required for kernel Rust support is not packaged in
Rocky Linux 9.6. Replace the bindgen BuildRequires with a bundled
bindgen-cli crate built from vendored source during the RPM build.
[CIQ] v6.18.20 - updated spec

[CIQ] v6.18.21 - updated spec

github actions: Inherit the Kernel CI Automated workflow from main

spec: Skip certificate setup for noarch builds

Update spec for ciq_kernel-6.18.21-2

We've picked up a source code change to fix a kallsym issue and
a spec file change to address noarch builds while secure boot signing
github actions: Use trigger for kernelCI

Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
github actions: Trigger kernelCI on ciq-6.18.y-next branches

[CIQ] v6.18.22 - updated spec

spec: Fix posttrans script to handle noarch package expansion

[CIQ] ciq_kernel-6.18.22-2 - updated spec

spec: update branding in package descriptions and log messages

github actions: add RPM build workflow for x86_64 and aarch64

configs: enable legacy iptables/ip6tables support for all architectures

A customer running anetd (Google's GKE networking agent, a fork of
Cilium) reported that their nodes fail to reach Ready status because
anetd fatally exits when it cannot load the ip6_tables, ip6table_filter,
ip6table_mangle, and ip6table_raw kernel modules.
Add generic kernel Provides to spec

Adds 'Provides: kernel = version' to base package for compatibility
with packages depending on generic kernel capability.
Add generic kernel-headers and kernel-devel Provides to spec

Add versioned Provides for kernel-headers, kernel-devel, and
kernel-devel-<arch> so the namespaced CLK packages satisfy the same
dependency capabilities as stock Rocky kernel packages.
bundle_bindgen: add set -e, curl --fail, and SHA256 verification

- Add set -e so the script exits on any command failure
- Add -f (--fail) to curl so HTTP errors are caught
- Verify the downloaded crate against the known SHA256 from crates.io
  before extracting
[CIQ] v6.18.27 - rebased configs

ARM64_ERRATUM_4193714 was added and defaults to y if
you have ARM64 (which our aarch64 configs have)
 arm64: errata: Work around early CME DVMSync acknowledgement
 Upstream: 0baba94a9779c13c857f6efc55807e6a45b1d4e4
[CIQ] v6.18.27 - updated spec

generate_tarball: Also strip leading v from tags

[CIQ] v6.18.28 - updated spec

[CIQ] ciq_kernel-6.18.28-2 - updated spec

[CIQ] v6.18.31 - updated spec

[CIQ] v6.18.33 - updated spec

bundle_bindgen: add User-Agent header to crates.io request

crates.io returns 403 for API requests without a User-Agent header.
[CIQ] ciq_kernel-6.18.33-2 - updated spec

kernel-clk6.18: require ciq-kmod and ship %clk_version macro file

- Add Requires: ciq-kmod to the main meta package
- Install macros.kernel-clk6.18-<ver>-<rel> into %{buildroot}/usr/lib/rpm/macros.d/
  during BuildKernel() (base variant only); defines %clk_version for kmod builds
- Versioned filename avoids collisions when multiple installonly devel packages coexist
- Ship as a real file in kernel-clk6.18-devel (no ghost, no scriptlets)
random: Add hook to override device reads and getrandom(2)

commit-author Herbert Xu <herbert.xu@redhat.com>
commit 6892c65de813d311f20443401e528b4dc56872ff
commit-source https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-10
crypto: rng - Override drivers/char/random in FIPS mode

commit-author Herbert Xu <herbert.xu@redhat.com>
commit 8b0beca705b3877e24cccdd672422c66bbd75635
commit-source https://gitlab.com/cki-project/kernel-ark
not upstream: Disable vdso getrandom when FIPS is enabled

commit-author Herbert Xu <herbert.xu@redhat.com>
commit 248b8056b11ed8e4b9004f401c75b7c72c3b27e4
commit-source https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-10
crypto: ecdh - implement FIPS PCT

commit -
commit-source https://build.opensuse.org/public/source/SUSE:SLE-15-SP6:GA/kernel-source/patches.suse.tar.bz2
commit-patch-path patches.suse/crypto-ecdh-implement-FIPS-PCT.patch
crypto: essiv - Zeroize keys on exit in essiv_aead_setkey()

In essiv_aead_setkey(), use the same logic as crypto_authenc_esn_setkey()
to zeroize keys on exit.
crypto: drbg - Align buffers to at least a cache line

None of the ciphers used by the DRBG have an alignment requirement; thus,
they all return 0 from .crypto_init, resulting in inconsistent alignment
across all buffers.
mm/gup: introduce pin_user_pages_fast_only()

Like pin_user_pages_fast(), but with the internal-only FOLL_FAST_ONLY flag.
crypto: rng - Convert crypto_default_rng_refcnt into an unsigned int

There is no reason this refcount should be a signed int. Convert it to an
unsigned int, thereby also making it less likely to ever overflow.
crypto: rng - Fix priority inversions due to mutex locks

Since crypto_devrandom_read_iter() is invoked directly by user tasks and is
accessible by every task in the system, there are glaring priority
inversions on crypto_reseed_rng_lock and crypto_default_rng_lock.
crypto: rng - Implement fast per-CPU DRBG instances

When the kernel is booted with fips=1, the RNG exposed to userspace is
hijacked away from the CRNG and redirects to crypto_devrandom_read_iter(),
which utilizes the DRBG.
lib/crypto: Add FIPS self-tests for SHA-1 and SHA-2

commit-author Eric Biggers <ebiggers@kernel.org>
commit 04cadb4fe0341304741ef60a297366b553f0ce36
byteorder: Add le64_to_cpu_array() and cpu_to_le64_array()

commit-author Eric Biggers <ebiggers@kernel.org>
commit c99d30706043481a1d631bbd9c7a4b70fe002a2b
lib/crypto: blake2b: Add BLAKE2b library functions

commit-author Eric Biggers <ebiggers@kernel.org>
commit 23a16c9533ed92cc639c8f5bd9eb104809fe2919
btrfs: switch to library APIs for checksums

commit-author Eric Biggers <ebiggers@kernel.org>
commit fe11ac191ce0ad910f6fda0c628bcff19fcff47d
upstream-diff |
    NB. This was a back-port not a cherry-pick as some of
    the underlying code had been changed in prior upstream
    commits: cc38d178ff33543cdb0bd58cfbb9a7c41372ff75
	btrfs: enable large data folio support under CONFIG_BTRFS_EXPERIMENTAL
    and commit: 62bcbdca0ea9b1add9c22f400b51c56184902053
	btrfs: make btrfs_csum_one_bio() handle bs > ps without large folios
    and others unknown.
    These changes were judged too large to bring back
    from upstream as they are CONFIG_BTRFS_EXPERIMENTAL.
crypto: testmgr - block Crypto API xxhash64 in FIPS mode

commit-author Joachim Vandersmissen <git@jvdsn.com>
commit -
commit-source https://lore.kernel.org/linux-crypto/20260303060509.246038-1-git@jvdsn.com/
When in fips mode, self-test errors must panic.

Requested by the lab.
When in fips mode, self-test errors must panic.

Requested by the lab.
Change CONFIG_CRYPTO_JITTERENTROPY_OSR from 1 to 3 in all configs.

Retquested by the lab.
dh_compute_value misses the check SP800-56Arev3, 5.6.2.1.4 which is typically implemented after dh_is_pubkey_valid.

Requested by lab.
In crypto_kdf108_ctr_generate() there is no minimum length check for the digest to be generated - it must be at least 112 bits.

Requested by the lab.
Add fips_approved flag to SHA1 and HMAC-SHA1 structs.

Ensure this is initialized correctly based on system state
and key length.
Add fips_approved flag to SHA224 and HMAC-SHA224 structs.

Ensure this is initialized correctly based on system state
and key length.
Add fips_approved flag to SHA256 and HMAC-SHA256 structs.

Ensure this is initialized correctly based on system state
and key length.
Add fips_approved flag to SHA384 and HMAC-SHA384 structs.

Ensure this is initialized correctly based on system state
and key length.
Add fips_approved flag to SHA512 and HMAC-SHA512 structs.

Ensure this is initialized correctly based on system state
and key length.
Add fips_approved indicator to struct crypto_aes_ctx.

Requested by lab.
Add CONFIG_CRYPTO_FIPS_CUSTOM_VERSION=y, CONFIG_CRYPTO_FIPS_VERSION="ciq.6.18.20260531"

Requested by lab. Will be changed for rpm builds.
Unset CRYPTO_JITTERENTROPY_MEMSIZE_2, set CRYPTO_JITTERENTROPY_MEMSIZE_128.

Requested by lab.
github actions: Add FIPS protected directory check for PRs

Adds a workflow that runs on PRs targeting ciq-*-next branches and
checks whether new upstream commits touch FIPS protected directories.
Posts a PR comment alerting reviewers if changes are found.
Restore CRYPTO_TFM_FIPS_COMPLIANCE flag as an indicator to differentiate between internal and external IV generation when AES-GCM
encryption is performed.

Required by lab.
[CIQ] v6.18.35 - updated spec

[CIQ] ciq_kernel-6.18.35-2 - updated spec

github-actions: extend trigger glob to match suffix branches

Catches *_ciq-6.18.y-no-ltp, *_ciq-6.18.y-pr-only, and other branch-name
suffix variants used by the kernelCI skip-stages feature.
crypto: Kconfig - Make CRYPTO_FIPS depend on the DRBG being built-in

When FIPS mode is enabled (via fips=1), there is an absolute need for the
DRBG to be available. This is at odds with the fact that the DRBG can be
built as a module when in FIPS mode, leaving critical RNG functionality at
the whims of userspace.
random: Restrict extrng registration to init time

It is technically a risk to permit extrng registration by modules after
kernel init completes. Since there is only one user of the extrng interface
and it is imperative that it is the _only_ registered extrng for FIPS
compliance, restrict the extrng registration interface to only permit
registration during kernel init and only from built-in drivers.
crypto: rng - Only allow the DRBG to register as "stdrng" in FIPS mode

In FIPS mode, the DRBG must take precedence over all stdrng algorithms.
The only problem standing in the way of this is that a different stdrng
algorithm could get registered and utilized before the DRBG is registered,
and since crypto_alloc_rng() only allocates an stdrng algorithm when
there's no existing allocation, this means that it's possible for the wrong
stdrng algorithm to remain in use indefinitely.
crypto: rng - Fix tabs vs spaces in the per-CPU DRBG code

The 6.18.y version of "crypto: rng - Implement fast per-CPU DRBG instances"
picked up a few spots that use spaces where the ciqlts9_6 tree's version
[1] uses tabs: the lock_default_rng() comment's numbered list, the line
continuations in the unlock_local_rng() macro, and a brace in
crypto_devrandom_read_iter(). A nearby block comment was also missing the
space before its '*'. Fix them up.
crypto: rng - Make the per-CPU DRBG instances permanent

The per-CPU DRBG instances used to be torn down by crypto_del_default_rng()
under del_pcpu_rwsem, and the read path took that rwsem as a reader to keep
an instance from being freed out from under it. That machinery only made
sense back when the extrng override could be unregistered and the DRBG
could be built as a module.
crypto: rng - Skip leading zero-length iovec segments

The fast per-CPU DRBG path computes its initial user destination address
straight from the iov_iter. For an ITER_IOVEC iter it reads iter_iov_addr()
and iter_iov_len() of the current segment, but when the iovec leads with
one or more zero-length segments, the current segment is one of those empty
entries. iter_iov_addr() then hands back the base of an empty segment,
which is whatever userspace put there: its base can be NULL or some other
unwritable address, since a zero-length segment is never actually touched.
crypto: rng - Fix spurious EFAULT when the destination PTE is zapped

While GUP pinning makes it possible to pin the page _backing_ a user
address, it *doesn't* pin the page table entry (PTE) for that mapping. This
means the pinned physical page can be separated from the user address it
was backing, and even back a _different_ user address within the same
process. PTE zapping naturally happens during memory reclaim when memory
pressure is elevated, and can even be done directly by userspace via
madvise(MADV_DONTNEED).
Revert "mm/gup: reintroduce pin_user_pages_fast_only()"

This reverts commit ef467f3c43338f72f4173c98b15bc8021f79c3a1.
[CIQ] ciq_kernel-6.18.35-3 - updated spec

[CIQ] v6.18.36 - rebased configs

[CIQ] v6.18.36 - updated spec

[CIQ] v6.18.38 - updated spec

Add x86_64 minimal kernel variant to spec

Add a new "minimal" x86_64 kernel variant built with a stripped-down
config targeting server/cloud/VM workloads. Enabled by default on
x86_64, disableable with --without x86_64_minimal. A --with minimalonly
convenience option is also provided.
[CIQ] ciq_kernel-6.18.38-2 - updated spec

[CIQ] v6.18.39 - updated spec

[CIQ] v6.18.40 - rebased configs

[CIQ] v6.18.40 - updated spec

spec: relax UKI systemd requirement to 252-31 on RHEL

The UKI packages unconditionally required systemd >= 254-1, making them
uninstallable on Rocky 9 which ships systemd 252. The required
kernel-install UKI support (90-uki-copy.install, --entry-type) was
backported to RHEL/Rocky 9's systemd 252-31.
[CIQ] v6.18.41 - updated spec

[CIQ] v6.18.42 - updated spec

Set kpatch/driver certs for all builds

- Kpatch and driver (DUP) certs should be embedded in all builds -
  official and local (unsigned)
- No version increment here - this change doesn't affect any releases,
  only local builds
[CIQ] v6.18.43 - updated spec

spec: use %{rhel} for el version and conditionally use system bindgen

Replace the hardcoded el_version with %{rhel} directly, which is set
automatically by the buildroot.  This allows the same branch to produce
el9 packages in a Rocky 9 mock and el10 packages in a Rocky 10 mock.
crypto: rng - Fix double percpu offset in local_unlock() calls

local_unlock() is supposed to take a percpu pointer, which it then offsets
for the current CPU. The problem is that the per-CPU DRBG code passes
local_unlock() a pointer that has *already been offset for the current
CPU*, so the percpu offset gets added twice. `pcri` is the percpu pointer
and `cri` is the offset `pcri` pointer for the current CPU; passing `cri`
to local_unlock() results in the current CPU's offset getting added again
and thus the resulting pointer is garbage.
bpf: Support BPF_F_EGRESS with bpf_redirect_peer

commit-author Jordan Rife <jordan@jrife.io>
commit 509ca545d425512f83ca70093f6d836ec8ab5bd1
selftests/bpf: Add tests for bpf_redirect_peer with BPF_F_EGRESS

commit-author Jordan Rife <jordan@jrife.io>
commit 006b9456e9f4e8a5cada19409d26bec8193acc13
bpf: Reject redirect helpers without a bpf_net_context

commit-author Daniel Borkmann <daniel@iogearbox.net>
commit 3f4920d165b29052255527d8ae7619e7ec132ece
upstream-diff |
  This fix went through the net tree before the BPF_F_EGRESS feature
  (commit 509ca545d425) landed via bpf-next, so upstream rejects all
  flags in bpf_redirect_peer(). This tree already carries BPF_F_EGRESS,
  so the guard is adjusted to match the resolution in mainline merge
  commit 4748a67f71118.
net: Clear the dst when performing encap / decap

commit-author Jakub Kicinski <kuba@kernel.org>
commit 699f47e616fed11d5074e7bbee2f4f920028c4a2
bpf: Name the enum for BPF_FUNC_skb_adjust_room flags

commit-author Nick Hudson <nhudson@akamai.com>
commit 5e4bcad6171d4baf426e49a39580cdb79254ea36
bpf: Refactor masks for ADJ_ROOM flags and encap validation

commit-author Nick Hudson <nhudson@akamai.com>
commit 7b2ea1151e04d3506030db8734c48c5c2bec1392
Refactor the helper masks for bpf_skb_adjust_room() flags to simplify
validation logic and introduce:
bpf: Add BPF_F_ADJ_ROOM_DECAP_* flags for tunnel decapsulation

commit-author Nick Hudson <nhudson@akamai.com>
commit da199070bc6209bf5db970f8f84c7db4210fe511
bpf: Allow new DECAP flags and add guard rails

commit-author Nick Hudson <nhudson@akamai.com>
commit 3a39c214fd2c3dd8266649e7f9f85ca1439eb738
bpf: Clear decap state on skb_adjust_room shrink path

commit-author Nick Hudson <nhudson@akamai.com>
commit ec20dee2f2c4796c0f7c0a7d8a3a3e8a9e9da7a4
selftests/bpf: tc_tunnel - validate decap GSO and encapsulation state

commit-author Nick Hudson <nhudson@akamai.com>
commit adb771973026efe54627bcbe927e7205d04d6c68
upstream-diff |
  The upstream patch targets bpf-next where the BPF program has been
  converted to use vmlinux.h (commit 86433db93256) and the test runner
  has been migrated from a shell script to a C-based test_progs harness
  (commit 8517b1abe5ea). This tree has neither of those prerequisites,
  so the following upstream changes were dropped:
  - Post-decap GSO gso_type and skb->encapsulation validation
    via bpf_cast_to_kern_ctx/bpf_core_cast into skb_shared_info.
    These require vmlinux.h to access kernel-internal structs
    (sk_buff, skb_shared_info) and SKB_GSO_* constants.
  - TSO disable removal from prog_tests/test_tc_tunnel.c (file absent;
    this tree still uses test_tc_tunnel.sh).
  The CO-RE enum existence checks, functional flag-passing changes
  (DECAP_L4_GRE, DECAP_L4_UDP, DECAP_IPXIP4, DECAP_IPXIP6), and
  ipxip_flag parameter plumbing through decap_internal/decap_ipv4/
  decap_ipv6 are applied as in upstream. The test exercises the new
  kernel flag acceptance path and will fail to load on kernels lacking
  the new enum values, but does not validate post-decap skb state.
[CIQ] ciq_kernel-6.18.43-2 - updated spec

[CIQ] v6.18.48 - rebased configs

CXL_RAS was added as a def_bool y depending on ACPI_APEI_GHES,
PCIEAER, and CXL_PCI.
 cxl/pci: Remove CXL VH handling in CONFIG_PCIEAER_CXL conditional blocks from core/pci.c
 Upstream: 7ff8b1d60881c5f97b5ae426e14d2822917d3b69
[CIQ] v6.18.48 - updated spec

[CIQ] v6.18.49 - updated spec

[CIQ] v6.18.50 - updated spec

[CIQ] v6.18.52 - updated spec

Test Results

✅ Build Stage

Architecture Build Time Total Time
x86_64 37m 42s 38m 31s
aarch64 23m 52s 24m 28s

✅ Boot Verification

✅ Kernel Selftests

Architecture Passed Failed Compared Against Status
x86_64 443 60 ciq-6.18.y-next ✅ No regressions
aarch64 373 54 ciq-6.18.y-next ✅ No regressions

✅ LTP Results

Architecture Passed Failed Compared Against Status
x86_64 1478 82 ciq-6.18.y-next ❌ 1 regressions
aarch64 1453 81 ciq-6.18.y-next ⚠️ No baseline available

x86_64 regressions:

  • mmap22 (PASS -> FAIL)

🤖 This PR was automatically generated by GitHub Actions
Run ID: 34947928439

bmastbergen and others added 30 commits September 15, 2026 08:36
Adding configs based of Fedora-ARK default config from 6.18.2.
We are modifying these with the following configs where available
CONFIG_MODIFY_LDT_SYSCALL=n
CONFIG_LEGACY_VSYSCALL_NONE=n
These options are for old software support which adds performance
overhead and potential attack surfaces with go against the CIQ LT
kernels priority of performance and security.

CONFIG_LIVEPATCH=n
We do not have Live patching on for any road-map

CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y
This should be enabled, it often improves performance funnily enough

CONFIG_PREEMPT_VOLUNTARY=y
CONFIG_HZ=100
These are set to increase throughput CONFIG_PREEMPT_VOLUNTARY=y
(default
Fedora config) but CONFIG_HZ=100 for higher throughput over the
x86_64
default of CONFIG_HZ=1000 which provides lower latency.

After modification 'make CROSS_COMPILE=./scripts/dummy-tools/' was
run
Setting up the default build configs to ensure everything builds when we
update and rebase.
jira LE-2629
feature Additional SecureBoot patches for dynamic lockdown
commit b24fbd012b781b752cc51d6ef1fe1c6d5875ae87
commit-source https://salsa.debian.org/kernel-team/linux.git
commit-patch-path debian/patches/features/all/lockdown
commit-info Checkout the commit sha above and move to the directory
            listed above to find Debian patches matching this commits
	    summary line.

Add a kernel configuration option to lock down the kernel, to restrict
userspace's ability to modify the running kernel when UEFI Secure Boot is
enabled. Based on the x86 patch by Matthew Garrett.

Determine the state of Secure Boot in the EFI stub and pass this to the
kernel using the FDT.

Signed-off-by: Linn Crosetto <linn@hpe.com>
[bwh: Forward-ported to 4.10: adjust context]
[Lukas Wunner: Forward-ported to 4.11: drop parts applied upstream]
[bwh: Forward-ported to 4.15 and lockdown patch set:
 - Pass result of efi_get_secureboot() in stub through to
   efi_set_secure_boot() in main kernel
 - Use lockdown API and naming]
[bwh: Forward-ported to 4.19.3: adjust context in update_fdt()]
[dannf: Moved init_lockdown() call after uefi_init(), fixing SB detection]
[bwh: Drop call to init_lockdown(), as efi_set_secure_boot() now calls this]
[bwh: Forward-ported to 5.6: efi_get_secureboot() no longer takes a
 sys_table parameter]
[bwh: Forward-ported to 5.7: EFI initialisation from FDT was rewritten, so:
 - Add Secure Boot mode to the parameter enumeration in fdtparams.c
 - Add a parameter to efi_get_fdt_params() to return the Secure Boot mode
 - Since Xen does not have a property name defined for Secure Boot mode,
   change efi_get_fdt_prop() to handle a missing property name by clearing
   the output variable]
[Salvatore Bonaccorso: Forward-ported to 5.10: f30f242 ("efi: Rename
arm-init to efi-init common for all arch") renamed arm-init.c to efi-init.c]

Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira LE-2629
feature Additional SecureBoot patches for dynamic lockdown
commit b24fbd012b781b752cc51d6ef1fe1c6d5875ae87
commit-source https://salsa.debian.org/kernel-team/linux.git
commit-patch-path debian/patches/features/all/lockdown
commit-info Checkout the commit sha above and move to the directory
            listed above to find Debian patches matching this commits
            summary line.
UEFI machines can be booted in Secure Boot mode.  Add an EFI_SECURE_BOOT
flag that can be passed to efi_enabled() to find out whether secure boot is
enabled.

Move the switch-statement in x86's setup_arch() that inteprets the
secure_boot boot parameter to generic code and set the bit there.

Suggested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
cc: linux-efi@vger.kernel.org
[rperier: Forward-ported to 5.5:
 - Use pr_warn()
 - Adjust context]
[bwh: Forward-ported to 5.6: adjust context]
[bwh: Forward-ported to 5.7:
 - Use the next available bit in efi.flags
 - Adjust context]
Signed-off-by: Jonathan Maple <jmaple@ciq.com>

Revert "efi: Add an EFI_SECURE_BOOT flag to indicate secure boot mode"

This reverts commit 4047f887e98539d07d664eaa6699d9c8fb6c0ca4.
jira LE-2629
feature Additional SecureBoot patches for dynamic lockdown
commit b24fbd012b781b752cc51d6ef1fe1c6d5875ae87
commit-source https://salsa.debian.org/kernel-team/linux.git
commit-patch-path debian/patches/features/all/lockdown
commit-info Checkout the commit sha above and move to the directory
            listed above to find Debian patches matching this commits
            summary line.

Based on an earlier patch by David Howells, who wrote the following
description:

> UEFI Secure Boot provides a mechanism for ensuring that the firmware will
> only load signed bootloaders and kernels.  Certain use cases may also
> require that all kernel modules also be signed.  Add a configuration option
> that to lock down the kernel - which includes requiring validly signed
> modules - if the kernel is secure-booted.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
[Salvatore Bonaccorso: After fixing https://bugs.debian.org/956197 the
help text for LOCK_DOWN_IN_EFI_SECURE_BOOT was adjusted to mention that
lockdown is triggered in integrity mode (https://bugs.debian.org/1025417)]
Signed-off-by: Salvatore Bonaccorso <carnil@debian.org>
Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira LE-2629
feature Additional SecureBoot patches for dynamic lockdown
commit b24fbd012b781b752cc51d6ef1fe1c6d5875ae87
commit-source https://salsa.debian.org/kernel-team/linux.git
commit-patch-path debian/patches/features/all/lockdown
commit-info Checkout the commit sha above and move to the directory
            listed above to find Debian patches matching this commits
            summary line.

These drivers allow mapping arbitrary memory ranges as MTD devices.
This should be disabled to preserve the kernel's integrity when it is
locked down.

* Add the HWPARAM flag to the module parameters
* When slram is built-in, it uses __setup() to read kernel parameters,
  so add an explicit check security_locked_down() check

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Cc: Matthew Garrett <mjg59@google.com>
Cc: David Howells <dhowells@redhat.com>
Cc: Joern Engel <joern@lazybastard.org>
Cc: linux-mtd@lists.infradead.org
Signed-off-by: Jonathan Maple <jmaple@ciq.com>
jira LE-2629
feature Fedora EFI status status
commit 7a60169d168d6aae70aca10b7b71070666068529
commit-source https://gitlab.com/cki-project/kernel-ark/

This adds efi_status_to_str() for use when printing efi_status_t
messages, and reworks efi_status_to_err() so that the two use a common
list of errors.

Upstream Status: RHEL only
Signed-off-by: Peter Jones <pjones@redhat.com>
Signed-off-by: Jonathan Maple <jmaple@ciq.com>
CONFIG_SPI_MICROCHIP_CORE is no longer a valid config option in 6.18.3
 spi: microchip: rename driver file and internal identifiers
 Upstream 71c814e
Upstream commit 5ba2f0a (mm: introduce deferred freeing for
kernel page tables) was backported which adds new config option
ASYNC_KERNEL_PGTABLE_FREE.  Then upsteam commit e37d5a2
(iommu/sva: invalidate stale IOTLB entries for kernel address space)
was backported which selects it by default for x86 configs that have
selected IOMMU_SVA (which our x86_64 configs have)
 iommu/sva: invalidate stale IOTLB entries for kernel address space
 Upstream e37d5a2
The config dependency on DEVICE_PRIVATE for DRM_GPUSVM was removed,
causing it to be selected by default for configs with DRM_XE (like ours).
Because DRM_GPUSVM is now enabled, DRM_XE_USERPTR_INVAL_INJECT is valid,
but not selected by default.
 drm, drm/xe: Fix xe userptr in the absence of CONFIG_DEVICE_PRIVATE
 Upstream: bdcdf96 upstream.
ATH9K_AHB now depends on OF to be selected by default.  x86_64
configs do not have OF.  This is fine since ahb bus is arm only.
 wifi: ath9k: add OF dependency to AHB
 upstream: 125e7b3
WARN_ALL_UNSEEDED_RANDOM was removed completely
 Remove WARN_ALL_UNSEEDED_RANDOM kernel config option
 Upstream: 7dff99b

UNWIND_USER and HAVE_UNWIND_USER_FP were added and enabled
by default for x86.
 unwind_user/x86: Enable frame pointer unwinding on x86
 Upstream: 49cf34c
There are customers that will need this enabled by default
This matches the 6.12 spec
We are defining the product as clk so if we ever need to revoke or
deny the cert we can target this specific product
by design, kernel-ark blacklists all modules in modules-extra that have
a module alias. Now that qdiscs have their module alias [1], some of them
became blacklisted even if we didn't really intend to: move them back to
kernel-modules to preserve feature parity with other qdiscs (and
previous
releases).

[1] https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=241a94abcf465ba9363d93168da5ddd47002930f
And define pkgrelease using buildid.

.1.1.0.0 is excessive
This comes from kernel-ark and is part of their solution for a
kernel variant that should supplant the factory kernel.  Since thats
not what we want, remove this to avoid any confusion.
Adds Provides and Conflicts tags to kernel-clk6.18-* packages that
cannot be parallel installed with stock Rocky kernel packages:
- kernel-doc
- kernel-headers
- kernel-cross-headers
- kernel-debuginfo-common
- kernel-tools
- kernel-tools-libs
- kernel-tools-libs-devel
- kernel-selftests-internal

This allows these packages to satisfy dependencies for stock kernel
packages while preventing simultaneous installation.
Introduce %{pkg_suffix} macro (clk%{patchversion}) and use it for:
- package_name: kernel-%{pkg_suffix}
- tool packages: perf, python3-perf, libperf, rtla, rv

Tool packages now named:
- perf-%{pkg_suffix}
- python3-perf-%{pkg_suffix}
- libperf-%{pkg_suffix}
- libperf-%{pkg_suffix}-devel
- rtla-%{pkg_suffix}
- rv-%{pkg_suffix}
- *-debuginfo variants

Each tool package includes:
- Provides: <original-name> = %{specrpmversion}-%{release}
- Conflicts: <original-name>

This prevents parallel installation with stock Rocky kernel tools
while satisfying dependencies for the original package names.
Switch Module.symvers compression from the dynamic %compression
macro (xz) to hardcoded gzip -c9, matching the upstream kernel spec.
Also fixes the ghost file permissions from 0644 to 0600.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Jonathan Dieter <jdieter@ciq.com>
Inject +%{pkg_suffix} into KVERREL and the shell-level equivalents
(KernelVer, DevelDir, EXTRAVERSION) so that uname -r shows the CLK
kernel identity, e.g. 6.18.19-1.1.el9_ciq.x86_64+clk6.18.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Jonathan Dieter <jdieter@ciq.com>
…g boot default

Reduce duplicated version numbers in the spec to single sources of truth:
- kernel_major_minor, kernel_patch, and buildid are the base defines
- specversion, kversion, patchlevel, pkgrelease, specrelease, and
  tarfile_release are all derived from them
- Remove specrpmversion (identical to specversion)
- Add el_version for tarball naming

Export GRUB_NON_STANDARD_KERNEL=true in the posttrans before calling
kernel-install so that 20-grub.install respects DEFAULTKERNEL in
/etc/sysconfig/kernel. When DEFAULTKERNEL=kernel-core, the CLK kernel
will no longer take over as the boot default on upgrade.

Update generate_tarball.sh to extract the base defines and compute
derived values rather than reading the now-derived tarfile_release
directly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Jonathan Dieter <jdieter@ciq.com>
bmastbergen and others added 26 commits September 15, 2026 08:36
The UKI packages unconditionally required systemd >= 254-1, making them
uninstallable on Rocky 9 which ships systemd 252. The required
kernel-install UKI support (90-uki-copy.install, --entry-type) was
backported to RHEL/Rocky 9's systemd 252-31.

Add the same %{?rhel} conditional that the 6.12 spec uses: require
systemd >= 252-31 on RHEL, >= 254-1 elsewhere.

Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
- Kpatch and driver (DUP) certs should be embedded in all builds -
  official and local (unsigned)
- No version increment here - this change doesn't affect any releases,
  only local builds
Replace the hardcoded el_version with %{rhel} directly, which is set
automatically by the buildroot.  This allows the same branch to produce
el9 packages in a Rocky 9 mock and el10 packages in a Rocky 10 mock.

Update generate_tarball.sh to accept the el version as an optional CLI
argument (e.g. ./generate_tarball.sh 10), falling back to rpm --eval
'%{rhel}' when not specified.

On Rocky 10, use the system bindgen-cli package (available in CRB)
instead of building from the bundled source tarball.

Extend the RPM Build CI workflow to validate builds for both Rocky 9
and Rocky 10 by adding el_version as a matrix dimension.
local_unlock() is supposed to take a percpu pointer, which it then offsets
for the current CPU. The problem is that the per-CPU DRBG code passes
local_unlock() a pointer that has *already been offset for the current
CPU*, so the percpu offset gets added twice. `pcri` is the percpu pointer
and `cri` is the offset `pcri` pointer for the current CPU; passing `cri`
to local_unlock() results in the current CPU's offset getting added again
and thus the resulting pointer is garbage.

This went unnoticed at runtime because local_unlock() only dereferences
that pointer on PREEMPT_RT or CONFIG_DEBUG_LOCK_ALLOC=y kernels. The
pointer is never actually used otherwise.

This also went unnoticed at compile time because, for x86_64, __percpu only
expands to something on GCC 14+; __percpu is otherwise an empty macro. So
there's no pointer type mismatch detected at compile time on older GCC
versions. On GCC 14+, the following compile error occurs:

  ../crypto/rng.c: In function 'lock_default_rng':
  ../include/linux/percpu-defs.h:221:45: error: initialization from pointer to non-enclosed address space

Fix it by using __local_unlock() instead, which eliminates the duplicate
per-CPU offset addition. While using local_unlock() with `pcri` also works,
using `cri` with __local_unlock() is leaner because it doesn't need to redo
the offset addition, saving an instruction on kernels that actually use the
pointer.

Signed-off-by: Sultan Alsawaf <sultan@ciq.com>
commit-author Jordan Rife <jordan@jrife.io>
commit 509ca54

We have several use cases where a pod injects traffic into the datapath
of another so that the traffic appears to have originated from that
pod. One such use case is a synthetic flow generator which injects
synthetic traffic into a pod's datapath to enable dynamic probing and
debugging. Another is a transparent proxy where connections originating
from one pod are redirected towards another which proxies that
connection. The new connection is bound to the IP of the original pod
using IP_TRANSPARENT and its traffic is injected into that pod's
datapath and handled as if it had originated there. This can be used for
mTLS, etc.

We use bpf_redirect(BPF_F_INGRESS) to direct traffic leaving the proxy,
flow generator, etc. towards the target pod, ensuring that eBPF programs
that are meant to intercept traffic leaving that pod are executed.
However, this doesn't work with netkit.

With netkit, an ingress redirection from proxy to workload skips eBPF
programs that are meant to intercept traffic leaving the pod, since they
reside on the netkit peer device. One workaround is to attach the
same program to both the netkit peer device and the TCX ingress hook for
the netkit pair's primary interface, but

a) This seems hacky and we need to be careful not to run the same
   program twice for the same skb in cases where we want to pass that
   traffic to the host stack.
b) We're trying to keep the proxy redirection / traffic injection
   systems as modular and separated from Cilium as possible, the system
   that manages netkit setup and core eBPF programming.

It would be handy if instead we could redirect traffic directly from
one netkit peer device to another. This patch proposes an extension
to bpf_redirect_peer to allow us to do just that.

With this patch, the BPF_F_EGRESS flag tells bpf_redirect_peer to emit
the skb in the egress direction of the target interface's peer device
While the main use case is netkit, I suppose you could also use this
mode with veth as well if, e.g., there were some eBPF programs attached
to that side of the veth pair that needed to intercept traffic.

 +---------------------------------------------------------------------+
 | +-------------------------+         6. bpf_redirect_neigh(eth0)     |
 | | pod (10.244.0.10)       |           ------------------------      |
 | |                         |          |                        |     |
 | |              +--------+ |          |      +---------+       |     |
 | | 1. packet -->|        | |          |      |         |       |     |
 | |    leaves ^  | netkit |<===========|======| netkit  |       |     |
 | |           |  | peer   |=======(eBPF)=====>| primary |       |     |
 | |           |  |        | |          |      |         |       |     |
 | |           |  +--------+ |          |      +---------+       |     |
 | |           |             |          | 2. bpf_redirect        v     |
 | +-----------|-------------+          |___________________   +-------|
 |             |                                            |  | eth0  |
 |             | 5. bpf_redirect_peer(BPF_F_EGRESS)         |  +-------|
 |             |________________________                    |          |
 | +-------------------------+          |                   |          |
 | | proxy (10.244.0.11)     |          |                   |          |
 | | IP_TRANSPARENT          |          |                   |          |
 | |              +--------+ |          |      +---------+  |          |
 | | 3. packet <--|        | |          |      |         |<--          |
 | |    enters    | netkit |<===========|======| netkit  |             |
 | |    [proxy]   | peer   |=======(eBPF)=====>| primary |             |
 | | 4. packet -->|        | |                 |         |             |
 | |    leaves    +--------+ |                 +---------+             |
 | |    sip=10.244.0.10      |                                         |
 | +-------------------------+                                         |
 +---------------------------------------------------------------------+

Using the proxy use case as an example, in step 5 we would redirect
traffic leaving the proxy towards the pod's peer device using
bpf_redirect_peer(BPF_F_EGRESS).

As a bonus, since the skb doesn't have to go through the backlog queue
it can take full advantage of netkit's performance benefits. I set up a
test where outgoing iperf3 traffic is injected into the datapath of
another pod using either bpf_redirect_peer(BPF_F_EGRESS) or
bpf_redirect(BPF_F_INGRESS). I used Cilium's eBPF host routing mode
which skips the host stack and uses BPF redirect helpers to do all the
routing.

  (net.ipv4.tcp_congestion_control=cubic,mtu=1500,100GiB link,Cilium
   eBPF host routing mode)

BASELINE [bpf_redirect(BPF_F_INGRESS)]
  1. [iperf pod] ==bpf_redirect([pod b], BPF_F_INGRESS)==> [pod b]
  2. [pod b]     ==bpf_redirect_neigh([eth0])==>           eth0
  3. eth0        ==over network==>                         [host b]

  [ ID] Interval           Transfer     Bitrate         Retr
  [  5]   0.00-60.00  sec   231 GBytes  33.0 Gbits/sec  12060     sender
  [  5]   0.00-60.00  sec   230 GBytes  33.0 Gbits/sec            receiver

TEST [bpf_redirect_peer(BPF_F_EGRESS)]
  1. [iperf pod] ==bpf_redirect_peer([pod b], BPF_F_EGRESS)==> [pod b]
  2. [pod b]     ==bpf_redirect_neigh([eth0])==>               eth0
  3. eth0        ==over network==>                             [host b]

  [ ID] Interval           Transfer     Bitrate         Retr
  [  5]   0.00-60.00  sec   272 GBytes  38.9 Gbits/sec    0       sender
  [  5]   0.00-60.00  sec   272 GBytes  38.9 Gbits/sec            receiver

In this test, using bpf_redirect_peer(BPF_F_EGRESS) for the hop from
[iperf pod] to [pod b] led to ~18% more throughput compared to
bpf_redirect(BPF_F_INGRESS).

Signed-off-by: Jordan Rife <jordan@jrife.io>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Paul Chaignon <paul.chaignon@gmail.com>
Reviewed-by: Jiayuan Chen <jiayuan.chen@linux.dev>
Link: https://lore.kernel.org/r/20260618182035.43811-2-jordan@jrife.io
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
(cherry picked from commit 509ca54)
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
commit-author Jordan Rife <jordan@jrife.io>
commit 006b945

Extend redirect tests to cover bpf_redirect_peer(BPF_F_EGRESS). SRC
redirects to DST using bpf_redirect_peer(BPF_F_EGRESS) then traffic is
hairpinned into DST using bpf_redirect.

Signed-off-by: Jordan Rife <jordan@jrife.io>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Paul Chaignon <paul.chaignon@gmail.com>
Link: https://lore.kernel.org/r/20260618182035.43811-3-jordan@jrife.io
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
(cherry picked from commit 006b945)
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
commit-author Daniel Borkmann <daniel@iogearbox.net>
commit 3f4920d
upstream-diff |
  This fix went through the net tree before the BPF_F_EGRESS feature
  (commit 509ca54) landed via bpf-next, so upstream rejects all
  flags in bpf_redirect_peer(). This tree already carries BPF_F_EGRESS,
  so the guard is adjusted to match the resolution in mainline merge
  commit 4748a67.

The bpf_redirect*() helpers and skb_do_redirect() obtain the per-task
bpf_redirect_info via bpf_net_ctx_get_ri(), which dereferences the
current->bpf_net_context unconditionally. That context is established
on the paths that run tc BPF such as sch_handle_{ingress,egress}(),
*except* for the case where {cls,act}_bpf was attached to a proper
qdisc. A program running from there reaches the NULL deref in two ways:

* It calls bpf_redirect() directly, which dereferences the context at
  the top of the helper:

     tc qdisc add dev eth0 root handle 1: red limit 1MB min 10KB max 20KB \
        avpkt 1000 burst 100 qevent early_drop block 10
     tc filter add block 10 pref 1 bpf obj redirect.o

* It simply returns TC_ACT_REDIRECT without helper call: tcf_qevent_handle()
  then dispatches to skb_do_redirect(), which dereferences the context

Rather than extending bpf_net_context management into the qdisc path,
make the redirect helpers refuse to operate when no context exists, and
have tcf_qevent_handle() drop a TC_ACT_REDIRECT verdict instead of
calling skb_do_redirect(). Previous behaviour was a crash, so nothing
regresses by not supporting it.

Fixes: 401cb7d ("net: Reference bpf_redirect_info via task_struct on PREEMPT_RT.")
Fixes: 3625750 ("net: sched: Introduce helpers for qevent blocks")
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Link: https://patch.msgid.link/20260706185609.330006-2-daniel@iogearbox.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
(cherry picked from commit 3f4920d)
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
commit-author Jakub Kicinski <kuba@kernel.org>
commit 699f47e

Commit ba9db6f ("net: clear the dst when changing skb protocol")
added dst clearing when a BPF program changes the skb protocol
(e.g. IPv4 to IPv6). Since that was a fix we only cleared the dst when
the L3 protocol actually changes to keep it minimal. As suggested during
the discussion (see Link) encap or decap operation which wraps or unwraps
a same-protocol header may also render the existing dst incorrect - even
if that doesn't result in a crash, just the wrong route for the now-outermost
IP dst.

Make dropping dst unconditional for bpf_skb_change_proto() and all
L3 encap / decap ops.

	Signed-off-by: Jakub Kicinski <kuba@kernel.org>
	Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
	Reviewed-by: Willem de Bruijn <willemb@google.com>
	Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/CANP3RGfRaYwve_xgxH6Tp2zenzKn2-DjZ9tg023WVzfdJF3p_w@mail.gmail.com
Link: https://patch.msgid.link/20260329180428.2657785-1-kuba@kernel.org
(cherry picked from commit 699f47e)
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
commit-author Nick Hudson <nhudson@akamai.com>
commit 5e4bcad

The existing anonymous enum for BPF_FUNC_skb_adjust_room flags is
named to enum bpf_adj_room_flags to enable CO-RE (Compile Once -
Run Everywhere) lookups in BPF programs.

Co-developed-by: Max Tottenham <mtottenh@akamai.com>
Co-developed-by: Anna Glasgall <aglasgal@akamai.com>
	Signed-off-by: Max Tottenham <mtottenh@akamai.com>
	Signed-off-by: Anna Glasgall <aglasgal@akamai.com>
	Signed-off-by: Nick Hudson <nhudson@akamai.com>
	Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
	Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/bpf/20260812083115.73100-2-nhudson@akamai.com
(cherry picked from commit 5e4bcad)
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
commit-author Nick Hudson <nhudson@akamai.com>
commit 7b2ea11
Refactor the helper masks for bpf_skb_adjust_room() flags to simplify
validation logic and introduce:

- BPF_F_ADJ_ROOM_ENCAP_MASK
- BPF_F_ADJ_ROOM_DECAP_MASK

Refactor existing validation checks in bpf_skb_net_shrink() and
bpf_skb_adjust_room() to use the new masks (no behavior change).

This is in preparation for supporting the new decap flags.

Co-developed-by: Max Tottenham <mtottenh@akamai.com>
Co-developed-by: Anna Glasgall <aglasgal@akamai.com>
	Signed-off-by: Max Tottenham <mtottenh@akamai.com>
	Signed-off-by: Anna Glasgall <aglasgal@akamai.com>
	Signed-off-by: Nick Hudson <nhudson@akamai.com>
	Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
	Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/bpf/20260812083115.73100-3-nhudson@akamai.com
(cherry picked from commit 7b2ea11)
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
commit-author Nick Hudson <nhudson@akamai.com>
commit da19907

Add new bpf_skb_adjust_room() decapsulation flags:

- BPF_F_ADJ_ROOM_DECAP_L4_GRE
- BPF_F_ADJ_ROOM_DECAP_L4_UDP
- BPF_F_ADJ_ROOM_DECAP_IPXIP4
- BPF_F_ADJ_ROOM_DECAP_IPXIP6

These flags let BPF programs describe which tunnel layer is being
removed, so later changes can update tunnel-related GSO state
accordingly during decapsulation.

This patch only introduces the UAPI flag definitions and helper
documentation.

Co-developed-by: Max Tottenham <mtottenh@akamai.com>
Co-developed-by: Anna Glasgall <aglasgal@akamai.com>
	Signed-off-by: Max Tottenham <mtottenh@akamai.com>
	Signed-off-by: Anna Glasgall <aglasgal@akamai.com>
	Signed-off-by: Nick Hudson <nhudson@akamai.com>
	Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
	Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/bpf/20260812083115.73100-4-nhudson@akamai.com
(cherry picked from commit da19907)
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
commit-author Nick Hudson <nhudson@akamai.com>
commit 3a39c21

Add checks to require shrink-only decap, reject conflicting decap flag
combinations, and verify removed length is sufficient for claimed header
decapsulation.

Co-developed-by: Max Tottenham <mtottenh@akamai.com>
Co-developed-by: Anna Glasgall <aglasgal@akamai.com>
	Signed-off-by: Max Tottenham <mtottenh@akamai.com>
	Signed-off-by: Anna Glasgall <aglasgal@akamai.com>
	Signed-off-by: Nick Hudson <nhudson@akamai.com>
	Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
	Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/bpf/20260812083115.73100-5-nhudson@akamai.com
(cherry picked from commit 3a39c21)
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
commit-author Nick Hudson <nhudson@akamai.com>
commit ec20dee

On shrink in bpf_skb_adjust_room(), apply decapsulation state updates
according to BPF_F_ADJ_ROOM_DECAP_* flags.

For GSO skbs, clear only the tunnel gso_type bits that correspond to
the requested decap layer:

- DECAP_L4_UDP: SKB_GSO_UDP_TUNNEL{,_CSUM}
- DECAP_L4_GRE: SKB_GSO_GRE{,_CSUM}
- DECAP_IPXIP4: SKB_GSO_IPXIP4
- DECAP_IPXIP6: SKB_GSO_IPXIP6

Then clear skb->encapsulation only if no tunnel GSO bits remain, keeping
encapsulation set for cases such as ESP-in-UDP where tunnel state remains.

For non-GSO skbs, there are no tunnel GSO bits to consult, so clear
skb->encapsulation directly when DECAP_L4_* or DECAP_IPXIP_* flags are set.

This keeps decap state handling consistent between GSO and non-GSO packets.

Co-developed-by: Max Tottenham <mtottenh@akamai.com>
Co-developed-by: Anna Glasgall <aglasgal@akamai.com>
	Signed-off-by: Max Tottenham <mtottenh@akamai.com>
	Signed-off-by: Anna Glasgall <aglasgal@akamai.com>
	Signed-off-by: Nick Hudson <nhudson@akamai.com>
	Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
	Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/bpf/20260812083115.73100-6-nhudson@akamai.com
(cherry picked from commit ec20dee)
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
commit-author Nick Hudson <nhudson@akamai.com>
commit adb7719
upstream-diff |
  The upstream patch targets bpf-next where the BPF program has been
  converted to use vmlinux.h (commit 86433db) and the test runner
  has been migrated from a shell script to a C-based test_progs harness
  (commit 8517b1a). This tree has neither of those prerequisites,
  so the following upstream changes were dropped:
  - Post-decap GSO gso_type and skb->encapsulation validation
    via bpf_cast_to_kern_ctx/bpf_core_cast into skb_shared_info.
    These require vmlinux.h to access kernel-internal structs
    (sk_buff, skb_shared_info) and SKB_GSO_* constants.
  - TSO disable removal from prog_tests/test_tc_tunnel.c (file absent;
    this tree still uses test_tc_tunnel.sh).
  The CO-RE enum existence checks, functional flag-passing changes
  (DECAP_L4_GRE, DECAP_L4_UDP, DECAP_IPXIP4, DECAP_IPXIP6), and
  ipxip_flag parameter plumbing through decap_internal/decap_ipv4/
  decap_ipv6 are applied as in upstream. The test exercises the new
  kernel flag acceptance path and will fail to load on kernels lacking
  the new enum values, but does not validate post-decap skb state.

tc_tunnel only partially validated decap state and missed some tunnel
cases. In particular, IPXIP decap checks were not exercised for
IPIP/SIT paths, and non-GSO decap encapsulation state was not
verified.

Tighten the test by:

- setting DECAP_IPXIP4/6 flags for IPIP/SIT/IP6 decap paths based on
  the outer tunnel header family;
- requiring needed DECAP enum values via CO-RE enum existence checks
  so missing kernel support fails fast;
- validating post-decap tunnel state for both GSO and non-GSO packets:
  expected gso_type bits must be cleared and skb->encapsulation must
  match remaining tunnel flags;
- removing forced TSO disable in the test harness so GSO validation is
  exercised.

This improves coverage for decap tunnel-state regressions and ensures
sit_none/ipip-style paths are checked correctly.

	Signed-off-by: Nick Hudson <nhudson@akamai.com>
	Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20260812083115.73100-7-nhudson@akamai.com
(cherry picked from commit adb7719)
Signed-off-by: Brett Mastbergen <bmastbergen@ciq.com>
CXL_RAS was added as a def_bool y depending on ACPI_APEI_GHES,
PCIEAER, and CXL_PCI.
 cxl/pci: Remove CXL VH handling in CONFIG_PCIEAER_CXL conditional blocks from core/pci.c
 Upstream: 7ff8b1d

GPU_BUDDY and GPU_BUDDY_KUNIT_TEST were added and DRM_LIB_RANDOM
was removed as the DRM buddy allocator was moved up to drivers/gpu/.
DRM_BUDDY now selects GPU_BUDDY, and GPU_BUDDY_KUNIT_TEST defaults
to KUNIT_ALL_TESTS.
 gpu: Move DRM buddy allocator one level up (part two)
 Upstream: ba110db

EROFS_FS_ZIP_LZMA_DEFAULT_MAX_STREAMS was added (default 16) to cap
the LZMA decompression stream pool size on high-CPU systems.
 erofs: cap LZMA stream pool size
 Upstream: c9b47e6
@ciq-kernel-automation ciq-kernel-automation Bot added the created-by-kernelci Tag PRs that were automatically created when a user branch was pushed to the repo (kernelCI) label Sep 15, 2026
@ciq-kernel-automation

Copy link
Copy Markdown
Author

⚠️ FIPS Protected Directory Changes Detected

New upstream commits in this rebase touch FIPS protected directories.
Please consult the CIQ FIPS / Security team before merging.

Details
[fips-check] Checking for FIPS protected changes in 7cfc41f8e80f11ffa8382ed1a505154ceffb79c7..origin/ciq-6.18.y-next
[fips-check] Protected directories: arch/x86/crypto/, crypto/asymmetric_keys/, crypto/, drivers/crypto/, drivers/char/random.c, include/crypto
[fips-check] Checking for FIPS protected changes
[fips-check] Getting SHAS 7cfc41f8e80f11ffa8382ed1a505154ceffb79c7..origin/ciq-6.18.y-next
[fips-check] Number of commits to check:  2036
[fips-check] Checking modifications of shas
[fips-check] Checked commit b'd48197cbd5d3476c7deea644972e9ec510865ec2' touched 1 FIPS protected files
  - b'crypto/'
[fips-check] Checked 203 of 2036 commits
[fips-check] Checked commit b'9d634e8f9e20ae0b08e78c918f277f308760338f' touched 1 FIPS protected files
  - b'crypto/'
[fips-check] Checked commit b'8c9b0a3a6d27f8980d382e3f4c7b2ae37f18d624' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked 406 of 2036 commits
[fips-check] Checked commit b'5067a5fbbd02509a6e46a66d268e1fd0409bbf8b' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'0c68bf6b4842eab2b4f61bf4afa886ce1c1bba1f' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked 609 of 2036 commits
[fips-check] Checked 812 of 2036 commits
[fips-check] Checked commit b'9c9c64abed53056e0bc0d792473b5a51c76f9c8f' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'7efb51a5893b22003a679d088b7794be2ccd6c32' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked 1015 of 2036 commits
[fips-check] Checked commit b'19ae79f185bc5e247b6b9391bc0f23cfd90d2d97' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'4a52a2fb96d1006598fd130320401cfff8a91420' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked 1218 of 2036 commits
[fips-check] Checked commit b'5bbb726d27ff6dff750264e51aa665538394d0f8' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'e7d8ddd471d2895f1d4098832c21121d4191adaa' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'62219775a07ce0bd8085852f3d1e2d772bf6fdec' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'91ded4742fcde6ad415c4d8a20e5ea0dcdf4f73e' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'f4d347fb1309b69ea6f817a17e6b2893c8d754b7' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'e64d6f1aae8c837cb3f0446bf44108226d7370f4' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'9af019e213ada5c3d0d33c515071a1414b6899f3' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'6b19f343ae8ada4c84209bc6f62d50ea9781c4ae' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked 1421 of 2036 commits
[fips-check] Checked 1624 of 2036 commits
[fips-check] Checked commit b'1c4b90902c05cc94ef64fa55d0222d8ac36d1401' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'5c1e763b713f053c52819c6eca1383951db03190' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'e39767b9a54d9144e8e534ac5a24053dbee11d26' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'fc933a4a419ba8a75da28666a018602c44846953' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked commit b'4fcbc9f4082ca622271f213ec664554aca8cab2d' touched 1 FIPS protected files
  - b'drivers/crypto/'
[fips-check] Checked 1827 of 2036 commits
[fips-check] Checked 2030 of 2036 commits
[fips-check] 22 of 2036 commits have FIPS protected changes

[fips-check] ========================================
[fips-check] FIPS protected changes detected
[fips-check] ========================================
[fips-check] 22 commit(s) touch FIPS protected directories:

## Commit d48197cbd5d3476c7deea644972e9ec510865ec2
commit d48197cbd5d3476c7deea644972e9ec510865ec2
Author: Jérémy Jean <Jeremy.Jean@oss.cyber.gouv.fr>
Date:   Sat Aug 15 10:09:18 2026 +0000

    crypto: acomp - allocate async request context when cloning
    
    [ Upstream commit ee440d4fc0d2f15894ab1f64c474a3adbc858880 ]
    
    ACOMP_REQUEST_ON_STACK() reserves only enough storage for the
    synchronous fallback. When an async implementation is selected, callers
    clone that stack request before retrying, but acomp_request_clone()
    currently copies only the stack-sized object. The clone therefore has no
    storage for the async provider request context, and providers such as QAT
    write past the allocation through acomp_request_ctx(). KASAN does report
    a slab OOB write.
    
    Allocate a zeroed clone large enough for the runtime acomp request size,
    copy only the bytes present in the source object, and preserve the
    existing fallback-on-allocation-failure behavior. Use the runtime reqsize
    because an implementation may adjust it during tfm initialization.
    
    Fixes: 097c432caaa6 ("crypto: acomp - Add ACOMP_REQUEST_CLONE")
    Assisted-by: Codex:gpt-5
    Signed-off-by: Jérémy Jean <Jeremy.Jean@oss.cyber.gouv.fr>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 crypto/acompress.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

  FIPS directory: crypto/

## Commit 9d634e8f9e20ae0b08e78c918f277f308760338f
commit 9d634e8f9e20ae0b08e78c918f277f308760338f
Author: Karl Mehltretter <kmehltretter@gmail.com>
Date:   Sat Aug 8 13:48:48 2026 +0200

    crypto: lskcipher - propagate errors from unaligned crypt
    
    [ Upstream commit 7537036a2e6fe96f8ed82034f755c54714a0e417 ]
    
    The while loop declares a second err variable that shadows the outer
    one. When the crypt callback fails, the goto out path returns the outer
    err, which still holds the -ENOMEM value assigned before the successful
    allocation check. The real error from the cipher is discarded and the
    caller sees -ENOMEM instead.
    
    Drop the inner declaration so the callback error reaches the caller.
    
    Verified with a test module that registers an lskcipher whose encrypt
    callback fails with -EIO and calls it through a misaligned buffer.
    An unpatched kernel returns -ENOMEM, a patched kernel returns -EIO.
    
    Found with Clang's -Wshadow.
    
    Fixes: 31865c4c4db2b ("crypto: skcipher - Add lskcipher")
    Assisted-by: Claude:claude-fable-5
    Signed-off-by: Karl Mehltretter <kmehltretter@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 crypto/lskcipher.c | 1 -
 1 file changed, 1 deletion(-)

  FIPS directory: crypto/

## Commit 8c9b0a3a6d27f8980d382e3f4c7b2ae37f18d624
commit 8c9b0a3a6d27f8980d382e3f4c7b2ae37f18d624
Author: Zhushuai Yin <yinzhushuai@huawei.com>
Date:   Tue Aug 4 10:22:07 2026 +0800

    crypto: hisilicon/sec2 - fix CCM algorithm long packet failure
    
    [ Upstream commit b82f60be50c87b3d75e207852c5ca74fa18f66cf ]
    
    In the CCM B0 block the message-length field Q spans L bytes, where
    L (cl in the driver) is derived from the cipher IV flags byte as
    c_ivin[0] + 1. set_aead_auth_iv() hardcoded writing only the last 2
    bytes of a_ivin with cryptlen, implicitly assuming cl = 2.
    
    When cl = 3 (a shorter nonce yielding a 3-byte length field) and the
    packet is longer than 65535 bytes, cryptlen no longer fits in 2 bytes.
    The dropped high byte made the auth IV built by the driver differ from
    the one consumed by the hardware, so the software/hardware comparison
    failed and the CCM request errored out.
    
    Write the last cl bytes of a_ivin in a loop driven by the IV's CL
    value, so the length-field width always matches the algorithm
    configuration instead of assuming a fixed 2-byte field.
    
    Fixes: c16a70c1f253 ("crypto: hisilicon/sec - add new algorithm mode for AEAD")
    Signed-off-by: Zhushuai Yin <yinzhushuai@huawei.com>
    Signed-off-by: Chenghai Huang <huangchenghai2@huawei.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/hisilicon/sec2/sec_crypto.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

  FIPS directory: drivers/crypto/

## Commit 5067a5fbbd02509a6e46a66d268e1fd0409bbf8b
commit 5067a5fbbd02509a6e46a66d268e1fd0409bbf8b
Author: Ahsan Atta <ahsan.atta@intel.com>
Date:   Fri Jul 31 13:48:32 2026 +0100

    crypto: qat - remove dead ADF_HEX code
    
    [ Upstream commit 61135c1597af56eb454d53c9d7cda90d5e5dc566 ]
    
    The ADF_HEX value type is defined in the adf_cfg_val_type enum and
    handled in adf_cfg_add_key_value_param(), but no caller in the tree
    uses it.
    
    Remove the unused ADF_HEX enum value and its dead handling code.
    
    Fixes: d8cba25d2c68 ("crypto: qat - Intel(R) QAT driver framework")
    Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Reviewed-by: Svyatoslav Pankratov <svyatoslav.pankratov@intel.com>
    Signed-off-by: Ahsan Atta <ahsan.atta@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/intel/qat/qat_common/adf_cfg.c        | 3 ---
 drivers/crypto/intel/qat/qat_common/adf_cfg_common.h | 1 -
 2 files changed, 4 deletions(-)

  FIPS directory: drivers/crypto/

## Commit 0c68bf6b4842eab2b4f61bf4afa886ce1c1bba1f
commit 0c68bf6b4842eab2b4f61bf4afa886ce1c1bba1f
Author: Thorsten Blum <thorsten.blum@linux.dev>
Date:   Sat Jun 6 01:11:02 2026 +0200

    crypto: qat - use 2-arg strscpy where destination size is known
    
    [ Upstream commit 4525ac14115d07c3e4c57a8cd5c154916e9d1172 ]
    
    To simplify the code, drop explicit and hard-coded size arguments from
    strscpy() where the destination buffer has a fixed size and strscpy()
    can automatically determine it using sizeof().
    
    Acked-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Stable-dep-of: 61135c1597af ("crypto: qat - remove dead ADF_HEX code")
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/intel/qat/qat_common/adf_cfg.c             | 7 ++++---
 drivers/crypto/intel/qat/qat_common/adf_cfg_services.c    | 2 +-
 drivers/crypto/intel/qat/qat_common/adf_mstate_mgr.c      | 3 ++-
 drivers/crypto/intel/qat/qat_common/adf_transport_debug.c | 3 ++-
 drivers/crypto/intel/qat/qat_common/qat_compression.c     | 3 ++-
 5 files changed, 11 insertions(+), 7 deletions(-)

  FIPS directory: drivers/crypto/

## Commit 9c9c64abed53056e0bc0d792473b5a51c76f9c8f
commit 9c9c64abed53056e0bc0d792473b5a51c76f9c8f
Author: Can Peng <pengcan@kylinos.cn>
Date:   Tue Jul 14 21:14:42 2026 +0800

    crypto: keembay - publish OF module alias for OCS AES/SM4
    
    [ Upstream commit 0a94091e29f914e4f233a208599ca4055882c01b ]
    
    The Keem Bay OCS AES/SM4 driver has an OF match table wired to
    .of_match_table, but does not export the table with MODULE_DEVICE_TABLE().
    
    Although the match table lives in keembay-ocs-aes-core.o, that object is
    part of the composite keembay-ocs-aes module.  Add the missing
    MODULE_DEVICE_TABLE(of, ...) entry so modpost can generate OF module alias
    information for OF based module autoloading.
    
    This is a source-level fix.  It does not claim dynamic hardware
    reproduction; the evidence is the driver-owned match table, its use by the
    platform driver, and the missing module alias publication.
    
    Fixes: 885743324513 ("crypto: keembay - Add support for Keem Bay OCS AES/SM4")
    Signed-off-by: Can Peng <pengcan@kylinos.cn>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/intel/keembay/keembay-ocs-aes-core.c | 1 +
 1 file changed, 1 insertion(+)

  FIPS directory: drivers/crypto/

## Commit 7efb51a5893b22003a679d088b7794be2ccd6c32
commit 7efb51a5893b22003a679d088b7794be2ccd6c32
Author: Linmao Li <lilinmao@kylinos.cn>
Date:   Tue Jul 14 11:30:15 2026 +0800

    crypto: keembay - Initialize completion before requesting IRQ
    
    [ Upstream commit fce20289dd622cc7ab78d72c8a979a9f8b7cb10e ]
    
    kmb_ocs_aes_probe() requests the device IRQ before initializing
    irq_completion. Once the handler is registered it can run immediately,
    and ocs_aes_irq_handler() unconditionally calls complete(). An
    interrupt in this window would therefore use an uninitialized
    completion.
    
    Initialize the completion before requesting the IRQ, as the sibling
    OCS HCU and ECC drivers already do.
    
    Fixes: 885743324513 ("crypto: keembay - Add support for Keem Bay OCS AES/SM4")
    Signed-off-by: Linmao Li <lilinmao@kylinos.cn>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/intel/keembay/keembay-ocs-aes-core.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

  FIPS directory: drivers/crypto/

## Commit 19ae79f185bc5e247b6b9391bc0f23cfd90d2d97
commit 19ae79f185bc5e247b6b9391bc0f23cfd90d2d97
Author: Thorsten Blum <thorsten.blum@linux.dev>
Date:   Fri Jul 10 09:42:17 2026 +0200

    crypto: sl3516 - drop invalid sg_dma_len checks before DMA mapping
    
    [ Upstream commit 3ae59a2eba64b3648f069aa52eeaaeefdfe4bb2f ]
    
    sg_dma_len() is only valid after mapping the scatterlist with
    dma_map_sg(). However, sl3516_ce_need_fallback() checks it before the
    source and destination scatterlists are mapped. Thus, a stale DMA length
    that is not a multiple of 16 could incorrectly force a software fallback
    when CONFIG_NEED_SG_DMA_LENGTH=y.
    
    Remove the invalid checks; the existing scatterlist length checks are
    sufficient.
    
    Fixes: 46c5338db7bd ("crypto: sl3516 - Add sl3516 crypto engine")
    Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
    Acked-by: Linus Walleij <linusw@kernel.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/gemini/sl3516-ce-cipher.c | 8 --------
 1 file changed, 8 deletions(-)

  FIPS directory: drivers/crypto/

## Commit 4a52a2fb96d1006598fd130320401cfff8a91420
commit 4a52a2fb96d1006598fd130320401cfff8a91420
Author: Atish Patra <atishp@meta.com>
Date:   Tue Jun 2 15:36:35 2026 -0700

    crypto: ccp - Fix memory leak in SEV INIT_EX path
    
    [ Upstream commit c8e53ada20d352b0f1bdc3e58405a9edab897a2e ]
    
    allocated pages in _init_ext_path are never freed and sev_init_ex_buffer
    is left pointing at the leaked memory in case of any failures during the
    function..
    
    Fix by adding an error path that frees the pages and clears
    sev_init_ex_buffer. Make sure we only free the memory if the failure
    happens before the conversion. Otherwise, we may end up trying to free
    up converted pages in case of reclaim failure. rmp_mark_pages_firmware
    failures should be rare enough to avoid more code complexity to track
    down which pages were reclaimed/leaked vs which are not.
    
    Fixes: 7364a6fbca45 ("crypto: ccp: Handle non-volatile INIT_EX data when SNP is enabled")
    
    Reported-by: Sashiko <sashiko-bot@kernel.org>
    Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Atish Patra <atishp@meta.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/ccp/sev-dev.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

  FIPS directory: drivers/crypto/

## Commit 5bbb726d27ff6dff750264e51aa665538394d0f8
commit 5bbb726d27ff6dff750264e51aa665538394d0f8
Author: Myeonghun Pak <mhun512@gmail.com>
Date:   Wed Jun 24 16:15:49 2026 +0900

    crypto: keembay - Fix AEAD unregister count in error path
    
    [ Upstream commit e264401ce4776a288524e5b87593d4d864147115 ]
    
    register_aes_algs() registers the AEAD algorithms before registering the
    skcipher algorithms.  If skcipher registration fails, the function unwinds
    the earlier AEAD registration with crypto_engine_unregister_aeads(), but it
    passes ARRAY_SIZE(algs), which is the skcipher table size.
    
    Use ARRAY_SIZE(algs_aead) for the AEAD unwind path so the unregister helper
    iterates over the same table that was registered.  Also clarify the nearby
    comment: the crypto registration helpers clean up algorithms registered
    within the same call, while this function must still unwind earlier
    successful registration steps.
    
    Fixes: 885743324513 ("crypto: keembay - Add support for Keem Bay OCS AES/SM4")
    Co-developed-by: Ijae Kim <ae878000@gmail.com>
    Signed-off-by: Ijae Kim <ae878000@gmail.com>
    Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/intel/keembay/keembay-ocs-aes-core.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

  FIPS directory: drivers/crypto/

## Commit e7d8ddd471d2895f1d4098832c21121d4191adaa
commit e7d8ddd471d2895f1d4098832c21121d4191adaa
Author: Pengpeng Hou <pengpeng@iscas.ac.cn>
Date:   Tue Jun 23 21:55:28 2026 +0800

    crypto: rk3288 - fail ahash requests on HASH idle timeout
    
    [ Upstream commit ae150db7826f21e8d19e54fb6243169628809c4d ]
    
    rk_hash_run() waits for RK_CRYPTO_HASH_STS to become idle after the
    final DMA transfer, but ignores the poll result. If the hash engine
    never becomes idle, the driver still reads the digest registers and
    finalizes the request with the previous success value.
    
    Store the poll result and finalize the request with the timeout error
    before reading the digest registers.
    
    Fixes: 37bc22159c45 ("crypto: rockchip - use read_poll_timeout")
    Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/rockchip/rk3288_crypto_ahash.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

  FIPS directory: drivers/crypto/

## Commit 62219775a07ce0bd8085852f3d1e2d772bf6fdec
commit 62219775a07ce0bd8085852f3d1e2d772bf6fdec
Author: Pengpeng Hou <pengpeng@iscas.ac.cn>
Date:   Tue Jun 23 14:07:27 2026 +0800

    hwrng: xilinx-trng - propagate timeout before any data is read
    
    [ Upstream commit ba088974419326daf46c5dc03e2cf6ab6ab701f7 ]
    
    xtrng_readblock32() polls for 16-byte chunks but returns the number of
    bytes read even when the first poll times out. Its caller then treats a
    zero return as a short successful read, and partial reads for full
    32-byte blocks can make the tail copy use a fixed block offset rather
    than the amount already produced.
    
    Return the poll error when no data has been read, preserve partial
    positive returns after some data is available, stop the generator on all
    collection exits, and append tail bytes at the current output count.
    
    Fixes: 8979744aca80 ("crypto: xilinx - Add TRNG driver for Versal")
    Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/xilinx/xilinx-trng.c | 32 ++++++++++++++++++++++++--------
 1 file changed, 24 insertions(+), 8 deletions(-)

  FIPS directory: drivers/crypto/

## Commit 91ded4742fcde6ad415c4d8a20e5ea0dcdf4f73e
commit 91ded4742fcde6ad415c4d8a20e5ea0dcdf4f73e
Author: Pengpeng Hou <pengpeng@iscas.ac.cn>
Date:   Tue Jun 16 08:46:27 2026 +0800

    crypto: sa2ul - stop probe if context pool creation fails
    
    [ Upstream commit d03f980a25853f6a380895119a572a3bb1194e8d ]
    
    sa_ul_probe() calls sa_init_mem() to create the DMA pool used for
    security context buffers, but ignores its return value. If pool creation
    fails, probe still continues with DMA setup, algorithm registration and
    child population even though later request setup depends on that pool.
    
    Stop probing when sa_init_mem() fails, and route that failure to the PM
    cleanup path without attempting to destroy an uncreated DMA pool.
    
    Fixes: 7694b6ca649f ("crypto: sa2ul - Add crypto driver")
    Signed-off-by: Pengpeng Hou <pengpeng@iscas.ac.cn>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/sa2ul.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

  FIPS directory: drivers/crypto/

## Commit f4d347fb1309b69ea6f817a17e6b2893c8d754b7
commit f4d347fb1309b69ea6f817a17e6b2893c8d754b7
Author: Lothar Rubusch <l.rubusch@gmail.com>
Date:   Sat Jun 13 20:20:37 2026 +0000

    crypto: atmel-sha204a - fix heap info leak on I2C transfer failure
    
    [ Upstream commit 72bbf11ba14bd7d5fbf31a1ec42fff608b657f74 ]
    
    The nonblocking RNG path allocates a work_data structure to track the
    state of an in-flight asynchronous I2C request. This pointer is stored
    in rng->priv and later consumed by the read path once the transaction
    completes.
    
    If the underlying I2C transfer fails, the completion callback is invoked
    with a non-zero status. In this case, the allocated work_data is not
    usable for producing RNG output and must not remain associated with the
    hwrng state.
    
    Previously, the failure path only logged a warning but left the pointer
    state uncleared, which can result in subsequent read attempts observing
    stale state and interpreting it as valid completion data.
    
    Fix this by freeing the pending work_data. The I2C transaction reports
    an error. This ensures that failed requests do not leave residual state
    behind that could be interpreted as valid RNG data on later reads.
    Clearing rng->priv is done at the subsequent call to nonblocking read.
    
    Fixes: da001fb651b0 ("crypto: atmel-i2c - add support for SHA204A random number generator")
    Signed-off-by: Lothar Rubusch <l.rubusch@gmail.com>
    Assisted-by: Gemini:1.5 Pro [google]
    Reviewed-by: Thorsten Blum <thorsten.blum@linux.dev>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/atmel-sha204a.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

  FIPS directory: drivers/crypto/

## Commit e64d6f1aae8c837cb3f0446bf44108226d7370f4
commit e64d6f1aae8c837cb3f0446bf44108226d7370f4
Author: Thorsten Blum <thorsten.blum@linux.dev>
Date:   Thu Jun 11 23:36:17 2026 +0200

    crypto: atmel-ecc - reject hardware ECDH without a public key
    
    [ Upstream commit f240f9b588f4e2de89822adebf560a96b5d263ed ]
    
    The hardware ECDH path in atmel_ecdh_compute_shared_secret() uses the
    private key stored in the device. However, the public key is cached only
    after atmel_ecdh_set_secret() successfully generated that private key
    for the current tfm.
    
    atmel_ecdh_generate_public_key() already rejects requests when no public
    key is cached. Add the same check to atmel_ecdh_compute_shared_secret()
    to prevent the device from using a private key that was not generated
    for the current tfm.
    
    Fixes: 11105693fa05 ("crypto: atmel-ecc - introduce Microchip / Atmel ECC driver")
    Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/atmel-ecc.c | 3 +++
 1 file changed, 3 insertions(+)

  FIPS directory: drivers/crypto/

## Commit 9af019e213ada5c3d0d33c515071a1414b6899f3
commit 9af019e213ada5c3d0d33c515071a1414b6899f3
Author: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Date:   Mon Jun 8 16:04:20 2026 +0100

    crypto: qat - clear AES key schedule from stack
    
    [ Upstream commit d41a9fcfb7f9ee36e4a4aaf5e7996bca6be1e7a9 ]
    
    qat_alg_xts_reverse_key() expands the forward XTS AES key on the stack.
    That schedule contains key material and can remain in the stack frame.
    
    Clear the temporary crypto_aes_ctx with memzero_explicit() after the copy.
    
    Fixes: 5106dfeaeabe ("crypto: qat - add AES-XTS support for QAT GEN4 devices")
    Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Reviewed-by: Ahsan Atta <ahsan.atta@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/intel/qat/qat_common/qat_algs.c | 1 +
 1 file changed, 1 insertion(+)

  FIPS directory: drivers/crypto/

## Commit 6b19f343ae8ada4c84209bc6f62d50ea9781c4ae
commit 6b19f343ae8ada4c84209bc6f62d50ea9781c4ae
Author: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Date:   Mon Jun 8 15:59:40 2026 +0100

    crypto: qat - cancel work on re-enable SR-IOV timeout
    
    [ Upstream commit 455b0f3ac9e254edab9f5a873d337abe5e6e3604 ]
    
    The QAT reset worker queues SR-IOV reenable work using a work_struct and
    completion embedded in an on-stack adf_sriov_dev_data. If the completion
    wait times out, the reset worker can return while device_sriov_wq still
    holds or executes the stack-backed work item.
    
    Cancel the work on the device_sriov_wq on timeout before the stack frame
    unwinds.
    
    Fixes: 4469f9b23468 ("crypto: qat - re-enable sriov after pf reset")
    Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Reviewed-by: Ahsan Atta <ahsan.atta@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

 drivers/crypto/intel/qat/qat_common/adf_aer.c | 2 ++
 1 file changed, 2 insertions(+)

  FIPS directory: drivers/crypto/

## Commit 1c4b90902c05cc94ef64fa55d0222d8ac36d1401
commit 1c4b90902c05cc94ef64fa55d0222d8ac36d1401
Author: Thorsten Blum <thorsten.blum@linux.dev>
Date:   Tue Sep 1 17:44:16 2026 -0400

    crypto: atmel-ecc - avoid stale fallback key after set_secret failure
    
    [ Upstream commit f07a0d251db7606e4792d2610788fbcc7b2c0d12 ]
    
    Clear ->do_fallback before decoding a new ECDH secret and enable it only
    after the software fallback accepts a caller-provided private key. This
    avoids using a stale fallback key should crypto_kpp_set_secret() fail.
    
    Fixes: 11105693fa05 ("crypto: atmel-ecc - introduce Microchip / Atmel ECC driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 drivers/crypto/atmel-ecc.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

  FIPS directory: drivers/crypto/

## Commit 5c1e763b713f053c52819c6eca1383951db03190
commit 5c1e763b713f053c52819c6eca1383951db03190
Author: Thorsten Blum <thorsten.blum@linux.dev>
Date:   Tue Sep 1 17:44:15 2026 -0400

    crypto: atmel-ecc - clean up and improve ECDH comments
    
    [ Upstream commit 3e84fb698abada239d3e35ed3d52a24dbfda5f6a ]
    
    Improve the kerneldoc for struct atmel_ecdh_ctx by removing the stale
    "unsupported curves" wording, since the device only supports a single
    curve (P-256), and move the set_secret() constraint to the description.
    
    In atmel_ecdh_set_secret(), clarify that the device generates the
    private key, and drop the redundant "only supports NIST P256" comment.
    
    In atmel_ecdh_done() and atmel_ecdh_generate_public_key(), clarify the
    truncation comments. Also note that a P-256 public key consists of two
    32-byte coordinates in atmel_ecdh_compute_shared_secret(), and remove
    the unnecessary fall-through comment and other redundant comments.
    
    Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Stable-dep-of: f07a0d251db7 ("crypto: atmel-ecc - avoid stale fallback key after set_secret failure")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 drivers/crypto/atmel-ecc.c | 38 ++++++++++++++------------------------
 1 file changed, 14 insertions(+), 24 deletions(-)

  FIPS directory: drivers/crypto/

## Commit e39767b9a54d9144e8e534ac5a24053dbee11d26
commit e39767b9a54d9144e8e534ac5a24053dbee11d26
Author: Thorsten Blum <thorsten.blum@linux.dev>
Date:   Tue Sep 1 17:44:14 2026 -0400

    crypto: atmel-ecc - replace min_t with min
    
    [ Upstream commit 5b085b2a038a1458f9398cb3b3b03cba6e38e1e0 ]
    
    Use the simpler min() macro since the values are all unsigned and
    compatible.
    
    Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
    Reviewed-by: David Laight <david.laght.linux@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Stable-dep-of: f07a0d251db7 ("crypto: atmel-ecc - avoid stale fallback key after set_secret failure")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 drivers/crypto/atmel-ecc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

  FIPS directory: drivers/crypto/

## Commit fc933a4a419ba8a75da28666a018602c44846953
commit fc933a4a419ba8a75da28666a018602c44846953
Author: Vinicius Costa Gomes <vinicius.gomes@intel.com>
Date:   Tue Sep 1 15:43:49 2026 -0400

    crypto: iaa - unmap dst before software fallback on decompress
    
    [ Upstream commit 94a25930477113730372e0fa2985da4c5ac95c9a ]
    
    On a hardware analytics error, decompress retries through the software
    fallback, which writes req->dst with the CPU while it is still mapped
    DMA_FROM_DEVICE. With SWIOTLB active the later dma_unmap_sg() copies the
    stale bounce buffer over req->dst, corrupting the result.
    
    Unmap before the fallback runs. The async path unmaps inline; the sync
    path signals the retry with -EAGAIN so iaa_comp_adecompress() runs the
    fallback after unmapping.
    
    Fixes: 2ec6761df889 ("crypto: iaa - Add support for deflate-iaa compression algorithm")
    Cc: stable@vger.kernel.org
    Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [ adapted unavailable iaa_unmap_src() calls to single-entry dma_unmap_sg() calls ]
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 drivers/crypto/intel/iaa/iaa_crypto_main.c | 27 ++++++++++++---------------
 1 file changed, 12 insertions(+), 15 deletions(-)

  FIPS directory: drivers/crypto/

## Commit 4fcbc9f4082ca622271f213ec664554aca8cab2d
commit 4fcbc9f4082ca622271f213ec664554aca8cab2d
Author: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Date:   Tue Sep 1 15:43:48 2026 -0400

    crypto: iaa - fall back to software for multi-entry scatterlists
    
    [ Upstream commit c7fdfd2bee1cf1448e5244da1a734e680f634b02 ]
    
    IAA cannot process source or destination scatterlists with more than one
    entry directly. Instead of failing these requests, route them through a
    separate deflate acomp transform and keep the request alive in software.
    
    The IAA driver has never handled multi-entry scatterlists, but the
    limitation was latent until commit e2c3b6b21c77 ("mm: zswap: use SG list
    decompression APIs from zsmalloc") made zswap pass the raw zsmalloc SG
    list directly to crypto drivers, so objects spanning multiple pages now
    reach IAA as multi-entry sources and would otherwise fail decompression.
    
    Fallback to the generic DEFLATE implementation for scatterlists with
    more than one entry. After the multi-entry cases fall back early,
    simplify the DMA mapping path to a single scatterlist entry and fall
    back on mapping failure as well.
    
    Add counters to track the number of requests processed by the software
    implementation on the compression direction.
    
    Fixes: 2ec6761df889 ("crypto: iaa - Add support for deflate-iaa compression algorithm")
    Fixes: e2c3b6b21c77 ("mm: zswap: use SG list decompression APIs from zsmalloc")
    Cc: stable@vger.kernel.org
    Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
    Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Stable-dep-of: 94a259304771 ("crypto: iaa - unmap dst before software fallback on decompress")
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

 drivers/crypto/intel/iaa/iaa_crypto_main.c  | 111 +++++++++++++++-------------
 drivers/crypto/intel/iaa/iaa_crypto_stats.c |   9 +++
 drivers/crypto/intel/iaa/iaa_crypto_stats.h |   2 +
 3 files changed, 71 insertions(+), 51 deletions(-)

  FIPS directory: drivers/crypto/

[fips-check] --fips-override set, continuing despite FIPS protected changes

@bmastbergen
bmastbergen requested review from a team and jallisonciq September 15, 2026 13:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

created-by-kernelci Tag PRs that were automatically created when a user branch was pushed to the repo (kernelCI)

Development

Successfully merging this pull request may close these issues.