Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
ba5c513
selftests/mm temporary fix of hmm infinite loop
PlaidCat Oct 22, 2024
8c7a311
SUSE: patch: crypto-ecdh-implement-FIPS-PCT.patch
jallisonciq Aug 29, 2024
409970c
crypto: essiv - Zeroize keys on exit in essiv_aead_setkey()
jason-rodri Sep 30, 2024
961a999
crypto: jitter - replace LFSR with SHA3-256
jallisonciq Jun 16, 2025
d9feabc
crypto: aead,cipher - zeroize key buffer after use
jallisonciq Sep 4, 2024
df9f820
crypto: ecdh - explicitly zeroize private_key
jvdsn Mar 28, 2024
6efa01a
crypto: lib/mpi - Fix unexpected pointer access in mpi_ec_init
uudiin Dec 14, 2023
79694fd
crypto: Kconfig - Make CRYPTO_FIPS depend on the DRBG being built-in
kerneltoast Jul 22, 2025
04f79a8
random: Restrict extrng registration to init time
kerneltoast Aug 1, 2025
66b3176
crypto: rng - Convert crypto_default_rng_refcnt into an unsigned int
kerneltoast Jun 24, 2025
ea4c03c
crypto: drbg - Align buffers to at least a cache line
kerneltoast Jun 11, 2025
f6af1e1
crypto: rng - Fix priority inversions due to mutex locks
kerneltoast Jun 24, 2025
e3458a5
mm/gup: reintroduce pin_user_pages_fast_only()
kerneltoast Jun 19, 2025
e858ec6
crypto: rng - Implement fast per-CPU DRBG instances
kerneltoast Aug 19, 2025
1d78e7b
configs: Ensure FIPS settings defined
PlaidCat Jul 29, 2025
14cf8aa
github actions: Use reusable validate kernel commits workflow
bmastbergen Oct 17, 2025
04c772e
github actions: Add kernelCI for rlc-9
roxanan1996 Mar 12, 2026
053591b
tools: hv: Enable debug logs for hv_kvp_daemon
PlaidCat Jun 9, 2025
aca5ead
crypto: rng - Only allow the DRBG to register as "stdrng" in FIPS mode
kerneltoast Jul 25, 2025
d060665
PCI/MSI: Export pci_msix_prepare_desc() for dynamic MSI-X allocations
shreeya-patel98 Dec 15, 2025
0f64333
PCI: hv: Allow dynamic MSI-X vector allocation
shreeya-patel98 Dec 15, 2025
9e0e28c
net: mana: explain irq_setup() algorithm
shreeya-patel98 Dec 15, 2025
8675ef0
net: mana: Allow irq_setup() to skip cpus for affinity
shreeya-patel98 Dec 15, 2025
cda645f
net: mana: Allocate MSI-X vectors dynamically
shreeya-patel98 Dec 15, 2025
16779c1
net: mana: Add support for net_shaper_ops
shreeya-patel98 Dec 16, 2025
83995c2
net: mana: Add speed support in mana_get_link_ksettings
shreeya-patel98 Dec 16, 2025
3c53b41
net: mana: Handle unsupported HWC commands
shreeya-patel98 Dec 16, 2025
786bb4a
net: mana: Fix build errors when CONFIG_NET_SHAPER is disabled
shreeya-patel98 Dec 16, 2025
abaef76
RDMA/mana_ib: add additional port counters
shreeya-patel98 Dec 17, 2025
0286de2
RDMA/mana_ib: Drain send wrs of GSI QP
shreeya-patel98 Dec 17, 2025
54501b4
net: hv_netvsc: fix loss of early receive events from host during cha…
shreeya-patel98 Dec 17, 2025
7a87607
net: mana: Reduce waiting time if HWC not responding
shreeya-patel98 Dec 17, 2025
923f867
RDMA/mana_ib: Extend modify QP
shreeya-patel98 Dec 17, 2025
92fbeb4
scsi: storvsc: Prefer returning channel with the same CPU as on the I…
shreeya-patel98 Dec 17, 2025
c9c6b12
net: mana: Use page pool fragments for RX buffers instead of full pag…
shreeya-patel98 Dec 17, 2025
4bd7711
idpf: add support for Tx refillqs in flow scheduling mode
jahay1 Jul 25, 2025
aa73912
idpf: improve when to set RE bit logic
jahay1 Jul 25, 2025
3627e99
idpf: simplify and fix splitq Tx packet rollback error path
jahay1 Jul 25, 2025
e1b85f5
idpf: replace flow scheduling buffer ring with buffer pool
jahay1 Jul 25, 2025
f6596c3
idpf: stop Tx if there are insufficient buffer resources
jahay1 Jul 25, 2025
ddde1d9
idpf: remove obsolete stashing code
jahay1 Jul 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .container_build_image
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
rocky-9-kernel-builder
11 changes: 11 additions & 0 deletions .github/workflows/kernel-build-and-test-multiarch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: Automated kernel build and test x86_64 and aarch64

on:
push:
branches:
- '*_rlc-9/**'

jobs:
kernelCI:
uses: ctrliq/kernel-src-tree/.github/workflows/kernel-build-and-test-multiarch.yml@main
secrets: inherit
10 changes: 10 additions & 0 deletions .github/workflows/validate-kernel-commits.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: Validate Kernel Commits

on:
pull_request:
types: [opened, synchronize, reopened]

jobs:
check:
uses: ctrliq/kernel-src-tree/.github/workflows/validate-kernel-commits.yml@main
secrets: inherit
11 changes: 11 additions & 0 deletions configs/kernel-x86_64-debug-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -7263,3 +7263,14 @@ CONFIG_ZSWAP=y
# CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD is not set
CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set

CONFIG_X509_CERTIFICATE_PARSER=y
CONFIG_PKCS7_MESSAGE_PARSER=y
CONFIG_FIPS_SIGNATURE_SELFTEST=y
CONFIG_FIPS_SIGNATURE_SELFTEST_RSA=y
CONFIG_FIPS_SIGNATURE_SELFTEST_ECDSA=y
CONFIG_CRYPTO_DRBG=y
CONFIG_CRYPTO_FIPS=y
CONFIG_CRYPTO_FIPS_CUSTOM_VERSION=y
CONFIG_CRYPTO_FIPS_VERSION="rocky9.20250725"
CONFIG_CRYPTO_FIPS_NAME="Rocky Linux 9 Kernel Cryptographic API"
11 changes: 11 additions & 0 deletions configs/kernel-x86_64-rhel.config
Original file line number Diff line number Diff line change
Expand Up @@ -7240,3 +7240,14 @@ CONFIG_ZSWAP=y
# CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD is not set
CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD=y
# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC is not set

CONFIG_X509_CERTIFICATE_PARSER=y
CONFIG_PKCS7_MESSAGE_PARSER=y
CONFIG_FIPS_SIGNATURE_SELFTEST=y
CONFIG_FIPS_SIGNATURE_SELFTEST_RSA=y
CONFIG_FIPS_SIGNATURE_SELFTEST_ECDSA=y
CONFIG_CRYPTO_DRBG=y
CONFIG_CRYPTO_FIPS=y
CONFIG_CRYPTO_FIPS_CUSTOM_VERSION=y
CONFIG_CRYPTO_FIPS_VERSION="rocky9.20250725"
CONFIG_CRYPTO_FIPS_NAME="Rocky Linux 9 Kernel Cryptographic API"
7 changes: 4 additions & 3 deletions crypto/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ if CRYPTO
comment "Crypto core or helper"

config CRYPTO_FIPS
bool "FIPS 200 compliance"
depends on (CRYPTO_ANSI_CPRNG || CRYPTO_DRBG) && !CRYPTO_MANAGER_DISABLE_TESTS
bool "FIPS compliance"
depends on CRYPTO_DRBG=y && !CRYPTO_MANAGER_DISABLE_TESTS
depends on (MODULE_SIG || !MODULES)
help
This option enables the fips boot option which is
required if you want the system to operate in a FIPS 200
required if you want the system to operate in a FIPS
certification. You should say no unless you know what
this is.

Expand Down Expand Up @@ -2025,6 +2025,7 @@ config CRYPTO_ANSI_CPRNG
tristate "Pseudo Random Number Generation for Cryptographic modules"
select CRYPTO_AES
select CRYPTO_RNG
select CRYPTO_SHA3
help
This option enables the generic pseudo random number generator
for cryptographic modules. Uses the Algorithm specified in
Expand Down
3 changes: 1 addition & 2 deletions crypto/aead.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,7 @@ static int setkey_unaligned(struct crypto_aead *tfm, const u8 *key,
alignbuffer = (u8 *)ALIGN((unsigned long)buffer, alignmask + 1);
memcpy(alignbuffer, key, keylen);
ret = crypto_aead_alg(tfm)->setkey(tfm, alignbuffer, keylen);
memset(alignbuffer, 0, keylen);
kfree(buffer);
kfree_sensitive(buffer);
return ret;
}

Expand Down
3 changes: 1 addition & 2 deletions crypto/cipher.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@ static int setkey_unaligned(struct crypto_cipher *tfm, const u8 *key,
alignbuffer = (u8 *)ALIGN((unsigned long)buffer, alignmask + 1);
memcpy(alignbuffer, key, keylen);
ret = cia->cia_setkey(crypto_cipher_tfm(tfm), alignbuffer, keylen);
memset(alignbuffer, 0, keylen);
kfree(buffer);
kfree_sensitive(buffer);
return ret;

}
Expand Down
6 changes: 6 additions & 0 deletions crypto/drbg.c
Original file line number Diff line number Diff line change
Expand Up @@ -1283,6 +1283,12 @@ static inline int drbg_alloc_state(struct drbg_state *drbg)
if (ret < 0)
goto err;

/*
* Align to at least a cache line for better performance. This also
* prevents false sharing of cache lines between different instances.
*/
ret = max(ret, L1_CACHE_BYTES - 1);

drbg->Vbuf = kmalloc(drbg_statelen(drbg) + ret, GFP_KERNEL);
if (!drbg->Vbuf) {
ret = -ENOMEM;
Expand Down
33 changes: 33 additions & 0 deletions crypto/ecdh.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <crypto/kpp.h>
#include <crypto/ecdh.h>
#include <linux/scatterlist.h>
#include <linux/fips.h>
#include "ecc.h"

struct ecdh_ctx {
Expand All @@ -33,6 +34,8 @@ static int ecdh_set_secret(struct crypto_kpp *tfm, const void *buf,
params.key_size > sizeof(u64) * ctx->ndigits)
return -EINVAL;

memset(ctx->private_key, 0, sizeof(ctx->private_key));

if (!params.key || !params.key_size)
return ecc_gen_privkey(ctx->curve_id, ctx->ndigits,
ctx->private_key);
Expand Down Expand Up @@ -94,6 +97,36 @@ static int ecdh_compute_value(struct kpp_request *req)
ctx->private_key, public_key);
buf = public_key;
nbytes = public_key_sz;

/*
* SP800-56Arev3, 5.6.2.1.4: ("Owner Assurance of
* Pair-wise Consistency"): recompute the public key
* and check if the results match.
*/
if (fips_enabled) {
u64 *public_key_pct;

if (ret < 0)
goto free_all;

public_key_pct = kmalloc(public_key_sz, GFP_KERNEL);
if (!public_key_pct) {
ret = -ENOMEM;
goto free_all;
}

ret = ecc_make_pub_key(ctx->curve_id, ctx->ndigits,
ctx->private_key,
public_key_pct);
if (ret < 0) {
kfree(public_key_pct);
goto free_all;
}

if (memcmp(public_key, public_key_pct, public_key_sz))
panic("ECDH PCT failed in FIPS mode");
kfree(public_key_pct);
}
}

if (ret < 0)
Expand Down
9 changes: 6 additions & 3 deletions crypto/essiv.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,13 +114,16 @@ static int essiv_aead_setkey(struct crypto_aead *tfm, const u8 *key,
crypto_shash_update(desc, keys.enckey, keys.enckeylen) ?:
crypto_shash_finup(desc, keys.authkey, keys.authkeylen, salt);
if (err)
return err;
goto out;

crypto_cipher_clear_flags(tctx->essiv_cipher, CRYPTO_TFM_REQ_MASK);
crypto_cipher_set_flags(tctx->essiv_cipher, crypto_aead_get_flags(tfm) &
CRYPTO_TFM_REQ_MASK);
return crypto_cipher_setkey(tctx->essiv_cipher, salt,
crypto_shash_digestsize(tctx->hash));
err = crypto_cipher_setkey(tctx->essiv_cipher, salt,
crypto_shash_digestsize(tctx->hash));
out:
memzero_explicit(&keys, sizeof(keys));
return err;
}

static int essiv_aead_setauthsize(struct crypto_aead *tfm,
Expand Down
Loading
Loading