kernel-6.6.0-0.rc7.20231024gitd88520ad73b7.55
* Tue Oct 24 2023 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.6.0-0.rc7.d88520ad73b7.55] - redhat: remove pending-rhel CONFIG_XFS_ASSERT_FATAL file (Patrick Talbert) - New configs in fs/xfs (Fedora Kernel Team) - crypto: rng - Override drivers/char/random in FIPS mode (Herbert Xu) - random: Add hook to override device reads and getrandom(2) (Herbert Xu) - Linux v6.6.0-0.rc7.d88520ad73b7 Resolves: Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
This commit is contained in:
parent
ff61ab282e
commit
34b9a6b2d0
@ -12,7 +12,7 @@ RHEL_MINOR = 99
|
|||||||
#
|
#
|
||||||
# Use this spot to avoid future merge conflicts.
|
# Use this spot to avoid future merge conflicts.
|
||||||
# Do not trim this comment.
|
# Do not trim this comment.
|
||||||
RHEL_RELEASE = 54
|
RHEL_RELEASE = 55
|
||||||
|
|
||||||
#
|
#
|
||||||
# RHEL_REBASE_NUM
|
# RHEL_REBASE_NUM
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
"https://gitlab.com/cki-project/kernel-ark/-/commit"/1820b71069f04d9347e71caeb9fe49e095dd28ec
|
||||||
|
1820b71069f04d9347e71caeb9fe49e095dd28ec crypto: rng - Override drivers/char/random in FIPS mode
|
||||||
|
|
||||||
|
"https://gitlab.com/cki-project/kernel-ark/-/commit"/325cfb22f086df02e268cfbfa6ff96d89d0acd5d
|
||||||
|
325cfb22f086df02e268cfbfa6ff96d89d0acd5d random: Add hook to override device reads and getrandom(2)
|
||||||
|
|
||||||
"https://gitlab.com/cki-project/kernel-ark/-/commit"/8374deeb36ca291927f714ba4b78349fb3a6e3b1
|
"https://gitlab.com/cki-project/kernel-ark/-/commit"/8374deeb36ca291927f714ba4b78349fb3a6e3b1
|
||||||
8374deeb36ca291927f714ba4b78349fb3a6e3b1 [redhat] kernel/rh_messages.c: move hardware tables to rh_messages.h
|
8374deeb36ca291927f714ba4b78349fb3a6e3b1 [redhat] kernel/rh_messages.c: move hardware tables to rh_messages.h
|
||||||
|
|
||||||
|
@ -7855,7 +7855,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7830,7 +7830,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7851,7 +7851,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7826,7 +7826,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7907,7 +7907,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7882,7 +7882,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7330,7 +7330,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7307,7 +7307,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7315,7 +7315,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7292,7 +7292,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7315,7 +7315,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
# CONFIG_XFS_FS is not set
|
# CONFIG_XFS_FS is not set
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7665,7 +7665,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7641,7 +7641,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7722,7 +7722,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
@ -7698,7 +7698,6 @@ CONFIG_XFRM_SUB_POLICY=y
|
|||||||
# CONFIG_XFRM_USER_COMPAT is not set
|
# CONFIG_XFRM_USER_COMPAT is not set
|
||||||
CONFIG_XFRM_USER=y
|
CONFIG_XFRM_USER=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
CONFIG_XFS_ASSERT_FATAL=y
|
|
||||||
# CONFIG_XFS_DEBUG is not set
|
# CONFIG_XFS_DEBUG is not set
|
||||||
CONFIG_XFS_FS=m
|
CONFIG_XFS_FS=m
|
||||||
# CONFIG_XFS_ONLINE_REPAIR is not set
|
# CONFIG_XFS_ONLINE_REPAIR is not set
|
||||||
|
13
kernel.spec
13
kernel.spec
@ -163,13 +163,13 @@ Summary: The Linux kernel
|
|||||||
%define specrpmversion 6.6.0
|
%define specrpmversion 6.6.0
|
||||||
%define specversion 6.6.0
|
%define specversion 6.6.0
|
||||||
%define patchversion 6.6
|
%define patchversion 6.6
|
||||||
%define pkgrelease 0.rc7.54
|
%define pkgrelease 0.rc7.20231024gitd88520ad73b7.55
|
||||||
%define kversion 6
|
%define kversion 6
|
||||||
%define tarfile_release 6.6-rc7
|
%define tarfile_release 6.6-rc7-18-gd88520ad73b7
|
||||||
# This is needed to do merge window version magic
|
# This is needed to do merge window version magic
|
||||||
%define patchlevel 6
|
%define patchlevel 6
|
||||||
# This allows pkg_release to have configurable %%{?dist} tag
|
# This allows pkg_release to have configurable %%{?dist} tag
|
||||||
%define specrelease 0.rc7.54%{?buildid}%{?dist}
|
%define specrelease 0.rc7.20231024gitd88520ad73b7.55%{?buildid}%{?dist}
|
||||||
# This defines the kabi tarball version
|
# This defines the kabi tarball version
|
||||||
%define kabiversion 6.6.0
|
%define kabiversion 6.6.0
|
||||||
|
|
||||||
@ -3709,6 +3709,13 @@ fi\
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Oct 24 2023 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.6.0-0.rc7.d88520ad73b7.55]
|
||||||
|
- redhat: remove pending-rhel CONFIG_XFS_ASSERT_FATAL file (Patrick Talbert)
|
||||||
|
- New configs in fs/xfs (Fedora Kernel Team)
|
||||||
|
- crypto: rng - Override drivers/char/random in FIPS mode (Herbert Xu)
|
||||||
|
- random: Add hook to override device reads and getrandom(2) (Herbert Xu)
|
||||||
|
- Linux v6.6.0-0.rc7.d88520ad73b7
|
||||||
|
|
||||||
* Mon Oct 23 2023 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.6.0-0.rc7.54]
|
* Mon Oct 23 2023 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.6.0-0.rc7.54]
|
||||||
- Linux v6.6.0-0.rc7
|
- Linux v6.6.0-0.rc7
|
||||||
|
|
||||||
|
@ -9,12 +9,15 @@
|
|||||||
arch/s390/kernel/setup.c | 4 +
|
arch/s390/kernel/setup.c | 4 +
|
||||||
arch/x86/kernel/cpu/common.c | 1 +
|
arch/x86/kernel/cpu/common.c | 1 +
|
||||||
arch/x86/kernel/setup.c | 68 ++-
|
arch/x86/kernel/setup.c | 68 ++-
|
||||||
|
crypto/drbg.c | 18 +-
|
||||||
|
crypto/rng.c | 149 +++++-
|
||||||
drivers/acpi/apei/hest.c | 8 +
|
drivers/acpi/apei/hest.c | 8 +
|
||||||
drivers/acpi/irq.c | 17 +-
|
drivers/acpi/irq.c | 17 +-
|
||||||
drivers/acpi/scan.c | 9 +
|
drivers/acpi/scan.c | 9 +
|
||||||
drivers/ata/libahci.c | 18 +
|
drivers/ata/libahci.c | 18 +
|
||||||
drivers/char/ipmi/ipmi_dmi.c | 15 +
|
drivers/char/ipmi/ipmi_dmi.c | 15 +
|
||||||
drivers/char/ipmi/ipmi_msghandler.c | 16 +-
|
drivers/char/ipmi/ipmi_msghandler.c | 16 +-
|
||||||
|
drivers/char/random.c | 122 +++++
|
||||||
drivers/firmware/efi/Makefile | 1 +
|
drivers/firmware/efi/Makefile | 1 +
|
||||||
drivers/firmware/efi/efi.c | 124 +++--
|
drivers/firmware/efi/efi.c | 124 +++--
|
||||||
drivers/firmware/efi/secureboot.c | 38 ++
|
drivers/firmware/efi/secureboot.c | 38 ++
|
||||||
@ -41,12 +44,14 @@
|
|||||||
drivers/scsi/sd.c | 10 +
|
drivers/scsi/sd.c | 10 +
|
||||||
drivers/usb/core/hub.c | 7 +
|
drivers/usb/core/hub.c | 7 +
|
||||||
fs/afs/main.c | 3 +
|
fs/afs/main.c | 3 +
|
||||||
|
include/linux/crypto.h | 1 +
|
||||||
include/linux/efi.h | 22 +-
|
include/linux/efi.h | 22 +-
|
||||||
include/linux/kernel.h | 14 +
|
include/linux/kernel.h | 14 +
|
||||||
include/linux/lsm_hook_defs.h | 2 +
|
include/linux/lsm_hook_defs.h | 2 +
|
||||||
include/linux/module.h | 5 +
|
include/linux/module.h | 5 +
|
||||||
include/linux/panic.h | 18 +-
|
include/linux/panic.h | 18 +-
|
||||||
include/linux/pci.h | 5 +
|
include/linux/pci.h | 5 +
|
||||||
|
include/linux/random.h | 10 +
|
||||||
include/linux/rh_kabi.h | 515 +++++++++++++++++++++
|
include/linux/rh_kabi.h | 515 +++++++++++++++++++++
|
||||||
include/linux/rmi.h | 1 +
|
include/linux/rmi.h | 1 +
|
||||||
include/linux/security.h | 5 +
|
include/linux/security.h | 5 +
|
||||||
@ -64,7 +69,7 @@
|
|||||||
security/lockdown/Kconfig | 13 +
|
security/lockdown/Kconfig | 13 +
|
||||||
security/lockdown/lockdown.c | 1 +
|
security/lockdown/lockdown.c | 1 +
|
||||||
security/security.c | 12 +
|
security/security.c | 12 +
|
||||||
66 files changed, 1779 insertions(+), 188 deletions(-)
|
71 files changed, 2060 insertions(+), 207 deletions(-)
|
||||||
|
|
||||||
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
|
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
|
||||||
index 0a1731a0f0ef..7015d8d057a0 100644
|
index 0a1731a0f0ef..7015d8d057a0 100644
|
||||||
@ -359,6 +364,280 @@ index b098b1fa2470..6b936d786590 100644
|
|||||||
unwind_init();
|
unwind_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
diff --git a/crypto/drbg.c b/crypto/drbg.c
|
||||||
|
index ff4ebbc68efa..2410034cca4f 100644
|
||||||
|
--- a/crypto/drbg.c
|
||||||
|
+++ b/crypto/drbg.c
|
||||||
|
@@ -1510,13 +1510,14 @@ static int drbg_generate(struct drbg_state *drbg,
|
||||||
|
* Wrapper around drbg_generate which can pull arbitrary long strings
|
||||||
|
* from the DRBG without hitting the maximum request limitation.
|
||||||
|
*
|
||||||
|
- * Parameters: see drbg_generate
|
||||||
|
+ * Parameters: see drbg_generate, except @reseed, which triggers reseeding
|
||||||
|
* Return codes: see drbg_generate -- if one drbg_generate request fails,
|
||||||
|
* the entire drbg_generate_long request fails
|
||||||
|
*/
|
||||||
|
static int drbg_generate_long(struct drbg_state *drbg,
|
||||||
|
unsigned char *buf, unsigned int buflen,
|
||||||
|
- struct drbg_string *addtl)
|
||||||
|
+ struct drbg_string *addtl,
|
||||||
|
+ bool reseed)
|
||||||
|
{
|
||||||
|
unsigned int len = 0;
|
||||||
|
unsigned int slice = 0;
|
||||||
|
@@ -1526,6 +1527,8 @@ static int drbg_generate_long(struct drbg_state *drbg,
|
||||||
|
slice = ((buflen - len) / drbg_max_request_bytes(drbg));
|
||||||
|
chunk = slice ? drbg_max_request_bytes(drbg) : (buflen - len);
|
||||||
|
mutex_lock(&drbg->drbg_mutex);
|
||||||
|
+ if (reseed)
|
||||||
|
+ drbg->seeded = DRBG_SEED_STATE_UNSEEDED;
|
||||||
|
err = drbg_generate(drbg, buf + len, chunk, addtl);
|
||||||
|
mutex_unlock(&drbg->drbg_mutex);
|
||||||
|
if (0 > err)
|
||||||
|
@@ -1952,6 +1955,7 @@ static int drbg_kcapi_random(struct crypto_rng *tfm,
|
||||||
|
struct drbg_state *drbg = crypto_rng_ctx(tfm);
|
||||||
|
struct drbg_string *addtl = NULL;
|
||||||
|
struct drbg_string string;
|
||||||
|
+ int err;
|
||||||
|
|
||||||
|
if (slen) {
|
||||||
|
/* linked list variable is now local to allow modification */
|
||||||
|
@@ -1959,7 +1963,15 @@ static int drbg_kcapi_random(struct crypto_rng *tfm,
|
||||||
|
addtl = &string;
|
||||||
|
}
|
||||||
|
|
||||||
|
- return drbg_generate_long(drbg, dst, dlen, addtl);
|
||||||
|
+ err = drbg_generate_long(drbg, dst, dlen, addtl,
|
||||||
|
+ (crypto_tfm_get_flags(crypto_rng_tfm(tfm)) &
|
||||||
|
+ CRYPTO_TFM_REQ_NEED_RESEED) ==
|
||||||
|
+ CRYPTO_TFM_REQ_NEED_RESEED);
|
||||||
|
+
|
||||||
|
+ crypto_tfm_clear_flags(crypto_rng_tfm(tfm),
|
||||||
|
+ CRYPTO_TFM_REQ_NEED_RESEED);
|
||||||
|
+
|
||||||
|
+ return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
diff --git a/crypto/rng.c b/crypto/rng.c
|
||||||
|
index 279dffdebf59..d24dd37205cd 100644
|
||||||
|
--- a/crypto/rng.c
|
||||||
|
+++ b/crypto/rng.c
|
||||||
|
@@ -12,10 +12,13 @@
|
||||||
|
#include <linux/atomic.h>
|
||||||
|
#include <linux/cryptouser.h>
|
||||||
|
#include <linux/err.h>
|
||||||
|
+#include <linux/fips.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/mutex.h>
|
||||||
|
#include <linux/random.h>
|
||||||
|
+#include <linux/sched.h>
|
||||||
|
+#include <linux/sched/signal.h>
|
||||||
|
#include <linux/seq_file.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
@@ -23,7 +26,9 @@
|
||||||
|
|
||||||
|
#include "internal.h"
|
||||||
|
|
||||||
|
-static DEFINE_MUTEX(crypto_default_rng_lock);
|
||||||
|
+static ____cacheline_aligned_in_smp DEFINE_MUTEX(crypto_reseed_rng_lock);
|
||||||
|
+static struct crypto_rng *crypto_reseed_rng;
|
||||||
|
+static ____cacheline_aligned_in_smp DEFINE_MUTEX(crypto_default_rng_lock);
|
||||||
|
struct crypto_rng *crypto_default_rng;
|
||||||
|
EXPORT_SYMBOL_GPL(crypto_default_rng);
|
||||||
|
static int crypto_default_rng_refcnt;
|
||||||
|
@@ -136,31 +141,37 @@ struct crypto_rng *crypto_alloc_rng(const char *alg_name, u32 type, u32 mask)
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(crypto_alloc_rng);
|
||||||
|
|
||||||
|
-int crypto_get_default_rng(void)
|
||||||
|
+static int crypto_get_rng(struct crypto_rng **rngp)
|
||||||
|
{
|
||||||
|
struct crypto_rng *rng;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
- mutex_lock(&crypto_default_rng_lock);
|
||||||
|
- if (!crypto_default_rng) {
|
||||||
|
+ if (!*rngp) {
|
||||||
|
rng = crypto_alloc_rng("stdrng", 0, 0);
|
||||||
|
err = PTR_ERR(rng);
|
||||||
|
if (IS_ERR(rng))
|
||||||
|
- goto unlock;
|
||||||
|
+ return err;
|
||||||
|
|
||||||
|
err = crypto_rng_reset(rng, NULL, crypto_rng_seedsize(rng));
|
||||||
|
if (err) {
|
||||||
|
crypto_free_rng(rng);
|
||||||
|
- goto unlock;
|
||||||
|
+ return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
- crypto_default_rng = rng;
|
||||||
|
+ *rngp = rng;
|
||||||
|
}
|
||||||
|
|
||||||
|
- crypto_default_rng_refcnt++;
|
||||||
|
- err = 0;
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int crypto_get_default_rng(void)
|
||||||
|
+{
|
||||||
|
+ int err;
|
||||||
|
|
||||||
|
-unlock:
|
||||||
|
+ mutex_lock(&crypto_default_rng_lock);
|
||||||
|
+ err = crypto_get_rng(&crypto_default_rng);
|
||||||
|
+ if (!err)
|
||||||
|
+ crypto_default_rng_refcnt++;
|
||||||
|
mutex_unlock(&crypto_default_rng_lock);
|
||||||
|
|
||||||
|
return err;
|
||||||
|
@@ -176,24 +187,33 @@ void crypto_put_default_rng(void)
|
||||||
|
EXPORT_SYMBOL_GPL(crypto_put_default_rng);
|
||||||
|
|
||||||
|
#if defined(CONFIG_CRYPTO_RNG) || defined(CONFIG_CRYPTO_RNG_MODULE)
|
||||||
|
-int crypto_del_default_rng(void)
|
||||||
|
+static int crypto_del_rng(struct crypto_rng **rngp, int *refcntp,
|
||||||
|
+ struct mutex *lock)
|
||||||
|
{
|
||||||
|
int err = -EBUSY;
|
||||||
|
|
||||||
|
- mutex_lock(&crypto_default_rng_lock);
|
||||||
|
- if (crypto_default_rng_refcnt)
|
||||||
|
+ mutex_lock(lock);
|
||||||
|
+ if (refcntp && *refcntp)
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
- crypto_free_rng(crypto_default_rng);
|
||||||
|
- crypto_default_rng = NULL;
|
||||||
|
+ crypto_free_rng(*rngp);
|
||||||
|
+ *rngp = NULL;
|
||||||
|
|
||||||
|
err = 0;
|
||||||
|
|
||||||
|
out:
|
||||||
|
- mutex_unlock(&crypto_default_rng_lock);
|
||||||
|
+ mutex_unlock(lock);
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+int crypto_del_default_rng(void)
|
||||||
|
+{
|
||||||
|
+ return crypto_del_rng(&crypto_default_rng, &crypto_default_rng_refcnt,
|
||||||
|
+ &crypto_default_rng_lock) ?:
|
||||||
|
+ crypto_del_rng(&crypto_reseed_rng, NULL,
|
||||||
|
+ &crypto_reseed_rng_lock);
|
||||||
|
+}
|
||||||
|
EXPORT_SYMBOL_GPL(crypto_del_default_rng);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -251,5 +271,102 @@ void crypto_unregister_rngs(struct rng_alg *algs, int count)
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(crypto_unregister_rngs);
|
||||||
|
|
||||||
|
+static ssize_t crypto_devrandom_read_iter(struct iov_iter *iter, bool reseed)
|
||||||
|
+{
|
||||||
|
+ struct crypto_rng *rng;
|
||||||
|
+ u8 tmp[256];
|
||||||
|
+ ssize_t ret;
|
||||||
|
+
|
||||||
|
+ if (unlikely(!iov_iter_count(iter)))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ if (reseed) {
|
||||||
|
+ u32 flags = 0;
|
||||||
|
+
|
||||||
|
+ /* If reseeding is requested, acquire a lock on
|
||||||
|
+ * crypto_reseed_rng so it is not swapped out until
|
||||||
|
+ * the initial random bytes are generated.
|
||||||
|
+ *
|
||||||
|
+ * The algorithm implementation is also protected with
|
||||||
|
+ * a separate mutex (drbg->drbg_mutex) around the
|
||||||
|
+ * reseed-and-generate operation.
|
||||||
|
+ */
|
||||||
|
+ mutex_lock(&crypto_reseed_rng_lock);
|
||||||
|
+
|
||||||
|
+ /* If crypto_default_rng is not set, it will be seeded
|
||||||
|
+ * at creation in __crypto_get_default_rng and thus no
|
||||||
|
+ * reseeding is needed.
|
||||||
|
+ */
|
||||||
|
+ if (crypto_reseed_rng)
|
||||||
|
+ flags |= CRYPTO_TFM_REQ_NEED_RESEED;
|
||||||
|
+
|
||||||
|
+ ret = crypto_get_rng(&crypto_reseed_rng);
|
||||||
|
+ if (ret) {
|
||||||
|
+ mutex_unlock(&crypto_reseed_rng_lock);
|
||||||
|
+ return ret;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ rng = crypto_reseed_rng;
|
||||||
|
+ crypto_tfm_set_flags(crypto_rng_tfm(rng), flags);
|
||||||
|
+ } else {
|
||||||
|
+ ret = crypto_get_default_rng();
|
||||||
|
+ if (ret)
|
||||||
|
+ return ret;
|
||||||
|
+ rng = crypto_default_rng;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ for (;;) {
|
||||||
|
+ size_t i, copied;
|
||||||
|
+ int err;
|
||||||
|
+
|
||||||
|
+ i = min_t(size_t, iov_iter_count(iter), sizeof(tmp));
|
||||||
|
+ err = crypto_rng_get_bytes(rng, tmp, i);
|
||||||
|
+ if (err) {
|
||||||
|
+ ret = err;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ copied = copy_to_iter(tmp, i, iter);
|
||||||
|
+ ret += copied;
|
||||||
|
+
|
||||||
|
+ if (!iov_iter_count(iter))
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ if (need_resched()) {
|
||||||
|
+ if (signal_pending(current))
|
||||||
|
+ break;
|
||||||
|
+ schedule();
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (reseed)
|
||||||
|
+ mutex_unlock(&crypto_reseed_rng_lock);
|
||||||
|
+ else
|
||||||
|
+ crypto_put_default_rng();
|
||||||
|
+ memzero_explicit(tmp, sizeof(tmp));
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static const struct random_extrng crypto_devrandom_rng = {
|
||||||
|
+ .extrng_read_iter = crypto_devrandom_read_iter,
|
||||||
|
+ .owner = THIS_MODULE,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static int __init crypto_rng_init(void)
|
||||||
|
+{
|
||||||
|
+ if (fips_enabled)
|
||||||
|
+ random_register_extrng(&crypto_devrandom_rng);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void __exit crypto_rng_exit(void)
|
||||||
|
+{
|
||||||
|
+ random_unregister_extrng();
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+late_initcall(crypto_rng_init);
|
||||||
|
+module_exit(crypto_rng_exit);
|
||||||
|
+
|
||||||
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_DESCRIPTION("Random Number Generator");
|
||||||
diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
|
diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
|
||||||
index 6aef1ee5e1bd..8f146b1b4972 100644
|
index 6aef1ee5e1bd..8f146b1b4972 100644
|
||||||
--- a/drivers/acpi/apei/hest.c
|
--- a/drivers/acpi/apei/hest.c
|
||||||
@ -531,6 +810,203 @@ index 186f1fee7534..93e3a76596ff 100644
|
|||||||
mutex_lock(&ipmi_interfaces_mutex);
|
mutex_lock(&ipmi_interfaces_mutex);
|
||||||
rv = ipmi_register_driver();
|
rv = ipmi_register_driver();
|
||||||
mutex_unlock(&ipmi_interfaces_mutex);
|
mutex_unlock(&ipmi_interfaces_mutex);
|
||||||
|
diff --git a/drivers/char/random.c b/drivers/char/random.c
|
||||||
|
index 3cb37760dfec..20aa9f3b8b48 100644
|
||||||
|
--- a/drivers/char/random.c
|
||||||
|
+++ b/drivers/char/random.c
|
||||||
|
@@ -51,6 +51,7 @@
|
||||||
|
#include <linux/completion.h>
|
||||||
|
#include <linux/uuid.h>
|
||||||
|
#include <linux/uaccess.h>
|
||||||
|
+#include <linux/rcupdate.h>
|
||||||
|
#include <linux/suspend.h>
|
||||||
|
#include <linux/siphash.h>
|
||||||
|
#include <linux/sched/isolation.h>
|
||||||
|
@@ -309,6 +310,11 @@ static void crng_fast_key_erasure(u8 key[CHACHA_KEY_SIZE],
|
||||||
|
memzero_explicit(first_block, sizeof(first_block));
|
||||||
|
}
|
||||||
|
|
||||||
|
+/*
|
||||||
|
+ * Hook for external RNG.
|
||||||
|
+ */
|
||||||
|
+static const struct random_extrng __rcu *extrng;
|
||||||
|
+
|
||||||
|
/*
|
||||||
|
* This function returns a ChaCha state that you may use for generating
|
||||||
|
* random data. It also returns up to 32 bytes on its own of random data
|
||||||
|
@@ -739,6 +745,9 @@ static void __cold _credit_init_bits(size_t bits)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+static const struct file_operations extrng_random_fops;
|
||||||
|
+static const struct file_operations extrng_urandom_fops;
|
||||||
|
+
|
||||||
|
/**********************************************************************
|
||||||
|
*
|
||||||
|
* Entropy collection routines.
|
||||||
|
@@ -956,6 +965,19 @@ void __init add_bootloader_randomness(const void *buf, size_t len)
|
||||||
|
credit_init_bits(len * 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
+void random_register_extrng(const struct random_extrng *rng)
|
||||||
|
+{
|
||||||
|
+ rcu_assign_pointer(extrng, rng);
|
||||||
|
+}
|
||||||
|
+EXPORT_SYMBOL_GPL(random_register_extrng);
|
||||||
|
+
|
||||||
|
+void random_unregister_extrng(void)
|
||||||
|
+{
|
||||||
|
+ RCU_INIT_POINTER(extrng, NULL);
|
||||||
|
+ synchronize_rcu();
|
||||||
|
+}
|
||||||
|
+EXPORT_SYMBOL_GPL(random_unregister_extrng);
|
||||||
|
+
|
||||||
|
#if IS_ENABLED(CONFIG_VMGENID)
|
||||||
|
static BLOCKING_NOTIFIER_HEAD(vmfork_chain);
|
||||||
|
|
||||||
|
@@ -1366,6 +1388,7 @@ SYSCALL_DEFINE3(getrandom, char __user *, ubuf, size_t, len, unsigned int, flags
|
||||||
|
struct iov_iter iter;
|
||||||
|
struct iovec iov;
|
||||||
|
int ret;
|
||||||
|
+ const struct random_extrng *rng;
|
||||||
|
|
||||||
|
if (flags & ~(GRND_NONBLOCK | GRND_RANDOM | GRND_INSECURE))
|
||||||
|
return -EINVAL;
|
||||||
|
@@ -1377,6 +1400,21 @@ SYSCALL_DEFINE3(getrandom, char __user *, ubuf, size_t, len, unsigned int, flags
|
||||||
|
if ((flags & (GRND_INSECURE | GRND_RANDOM)) == (GRND_INSECURE | GRND_RANDOM))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
+ rcu_read_lock();
|
||||||
|
+ rng = rcu_dereference(extrng);
|
||||||
|
+ if (rng && !try_module_get(rng->owner))
|
||||||
|
+ rng = NULL;
|
||||||
|
+ rcu_read_unlock();
|
||||||
|
+
|
||||||
|
+ if (rng) {
|
||||||
|
+ ret = import_single_range(ITER_DEST, ubuf, len, &iov, &iter);
|
||||||
|
+ if (unlikely(ret))
|
||||||
|
+ return ret;
|
||||||
|
+ ret = rng->extrng_read_iter(&iter, !!(flags & GRND_RANDOM));
|
||||||
|
+ module_put(rng->owner);
|
||||||
|
+ return ret;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (!crng_ready() && !(flags & GRND_INSECURE)) {
|
||||||
|
if (flags & GRND_NONBLOCK)
|
||||||
|
return -EAGAIN;
|
||||||
|
@@ -1397,6 +1435,12 @@ static __poll_t random_poll(struct file *file, poll_table *wait)
|
||||||
|
return crng_ready() ? EPOLLIN | EPOLLRDNORM : EPOLLOUT | EPOLLWRNORM;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static __poll_t extrng_poll(struct file *file, poll_table * wait)
|
||||||
|
+{
|
||||||
|
+ /* extrng pool is always full, always read, no writes */
|
||||||
|
+ return EPOLLIN | EPOLLRDNORM;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static ssize_t write_pool_user(struct iov_iter *iter)
|
||||||
|
{
|
||||||
|
u8 block[BLAKE2S_BLOCK_SIZE];
|
||||||
|
@@ -1538,7 +1582,58 @@ static int random_fasync(int fd, struct file *filp, int on)
|
||||||
|
return fasync_helper(fd, filp, on, &fasync);
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int random_open(struct inode *inode, struct file *filp)
|
||||||
|
+{
|
||||||
|
+ const struct random_extrng *rng;
|
||||||
|
+
|
||||||
|
+ rcu_read_lock();
|
||||||
|
+ rng = rcu_dereference(extrng);
|
||||||
|
+ if (rng && !try_module_get(rng->owner))
|
||||||
|
+ rng = NULL;
|
||||||
|
+ rcu_read_unlock();
|
||||||
|
+
|
||||||
|
+ if (!rng)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ filp->f_op = &extrng_random_fops;
|
||||||
|
+ filp->private_data = rng->owner;
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int urandom_open(struct inode *inode, struct file *filp)
|
||||||
|
+{
|
||||||
|
+ const struct random_extrng *rng;
|
||||||
|
+
|
||||||
|
+ rcu_read_lock();
|
||||||
|
+ rng = rcu_dereference(extrng);
|
||||||
|
+ if (rng && !try_module_get(rng->owner))
|
||||||
|
+ rng = NULL;
|
||||||
|
+ rcu_read_unlock();
|
||||||
|
+
|
||||||
|
+ if (!rng)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ filp->f_op = &extrng_urandom_fops;
|
||||||
|
+ filp->private_data = rng->owner;
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int extrng_release(struct inode *inode, struct file *filp)
|
||||||
|
+{
|
||||||
|
+ module_put(filp->private_data);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static ssize_t
|
||||||
|
+extrng_read_iter(struct kiocb *kiocb, struct iov_iter *iter)
|
||||||
|
+{
|
||||||
|
+ return rcu_dereference_raw(extrng)->extrng_read_iter(iter, false);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
const struct file_operations random_fops = {
|
||||||
|
+ .open = random_open,
|
||||||
|
.read_iter = random_read_iter,
|
||||||
|
.write_iter = random_write_iter,
|
||||||
|
.poll = random_poll,
|
||||||
|
@@ -1551,6 +1646,7 @@ const struct file_operations random_fops = {
|
||||||
|
};
|
||||||
|
|
||||||
|
const struct file_operations urandom_fops = {
|
||||||
|
+ .open = urandom_open,
|
||||||
|
.read_iter = urandom_read_iter,
|
||||||
|
.write_iter = random_write_iter,
|
||||||
|
.unlocked_ioctl = random_ioctl,
|
||||||
|
@@ -1561,6 +1657,32 @@ const struct file_operations urandom_fops = {
|
||||||
|
.splice_write = iter_file_splice_write,
|
||||||
|
};
|
||||||
|
|
||||||
|
+static const struct file_operations extrng_random_fops = {
|
||||||
|
+ .open = random_open,
|
||||||
|
+ .read_iter = extrng_read_iter,
|
||||||
|
+ .write_iter = random_write_iter,
|
||||||
|
+ .poll = extrng_poll,
|
||||||
|
+ .unlocked_ioctl = random_ioctl,
|
||||||
|
+ .compat_ioctl = compat_ptr_ioctl,
|
||||||
|
+ .fasync = random_fasync,
|
||||||
|
+ .llseek = noop_llseek,
|
||||||
|
+ .release = extrng_release,
|
||||||
|
+ .splice_read = copy_splice_read,
|
||||||
|
+ .splice_write = iter_file_splice_write,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static const struct file_operations extrng_urandom_fops = {
|
||||||
|
+ .open = urandom_open,
|
||||||
|
+ .read_iter = extrng_read_iter,
|
||||||
|
+ .write_iter = random_write_iter,
|
||||||
|
+ .unlocked_ioctl = random_ioctl,
|
||||||
|
+ .compat_ioctl = compat_ptr_ioctl,
|
||||||
|
+ .fasync = random_fasync,
|
||||||
|
+ .llseek = noop_llseek,
|
||||||
|
+ .release = extrng_release,
|
||||||
|
+ .splice_read = copy_splice_read,
|
||||||
|
+ .splice_write = iter_file_splice_write,
|
||||||
|
+};
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
*
|
||||||
diff --git a/drivers/firmware/efi/Makefile b/drivers/firmware/efi/Makefile
|
diff --git a/drivers/firmware/efi/Makefile b/drivers/firmware/efi/Makefile
|
||||||
index e489fefd23da..f2dfae764fb5 100644
|
index e489fefd23da..f2dfae764fb5 100644
|
||||||
--- a/drivers/firmware/efi/Makefile
|
--- a/drivers/firmware/efi/Makefile
|
||||||
@ -1704,6 +2180,18 @@ index eae288c8d40a..8b8bf447cedc 100644
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
error_proc:
|
error_proc:
|
||||||
|
diff --git a/include/linux/crypto.h b/include/linux/crypto.h
|
||||||
|
index 31f6fee0c36c..b099200de233 100644
|
||||||
|
--- a/include/linux/crypto.h
|
||||||
|
+++ b/include/linux/crypto.h
|
||||||
|
@@ -135,6 +135,7 @@
|
||||||
|
#define CRYPTO_TFM_REQ_FORBID_WEAK_KEYS 0x00000100
|
||||||
|
#define CRYPTO_TFM_REQ_MAY_SLEEP 0x00000200
|
||||||
|
#define CRYPTO_TFM_REQ_MAY_BACKLOG 0x00000400
|
||||||
|
+#define CRYPTO_TFM_REQ_NEED_RESEED 0x00000800
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Miscellaneous stuff.
|
||||||
diff --git a/include/linux/efi.h b/include/linux/efi.h
|
diff --git a/include/linux/efi.h b/include/linux/efi.h
|
||||||
index 80b21d1c6eaf..b66c0683f2fc 100644
|
index 80b21d1c6eaf..b66c0683f2fc 100644
|
||||||
--- a/include/linux/efi.h
|
--- a/include/linux/efi.h
|
||||||
@ -1881,6 +2369,34 @@ index 8c7c2c3c6c65..ee66c86fc538 100644
|
|||||||
#if defined(CONFIG_PCIEPORTBUS) || defined(CONFIG_EEH)
|
#if defined(CONFIG_PCIEPORTBUS) || defined(CONFIG_EEH)
|
||||||
void pci_uevent_ers(struct pci_dev *pdev, enum pci_ers_result err_type);
|
void pci_uevent_ers(struct pci_dev *pdev, enum pci_ers_result err_type);
|
||||||
#endif
|
#endif
|
||||||
|
diff --git a/include/linux/random.h b/include/linux/random.h
|
||||||
|
index b0a940af4fff..8a52424fd0d5 100644
|
||||||
|
--- a/include/linux/random.h
|
||||||
|
+++ b/include/linux/random.h
|
||||||
|
@@ -9,6 +9,13 @@
|
||||||
|
|
||||||
|
#include <uapi/linux/random.h>
|
||||||
|
|
||||||
|
+struct iov_iter;
|
||||||
|
+
|
||||||
|
+struct random_extrng {
|
||||||
|
+ ssize_t (*extrng_read_iter)(struct iov_iter *iter, bool reseed);
|
||||||
|
+ struct module *owner;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
struct notifier_block;
|
||||||
|
|
||||||
|
void add_device_randomness(const void *buf, size_t len);
|
||||||
|
@@ -157,6 +164,9 @@ int random_prepare_cpu(unsigned int cpu);
|
||||||
|
int random_online_cpu(unsigned int cpu);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+void random_register_extrng(const struct random_extrng *rng);
|
||||||
|
+void random_unregister_extrng(void);
|
||||||
|
+
|
||||||
|
#ifndef MODULE
|
||||||
|
extern const struct file_operations random_fops, urandom_fops;
|
||||||
|
#endif
|
||||||
diff --git a/include/linux/rh_kabi.h b/include/linux/rh_kabi.h
|
diff --git a/include/linux/rh_kabi.h b/include/linux/rh_kabi.h
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 000000000000..c7b42c1f1681
|
index 000000000000..c7b42c1f1681
|
||||||
|
6
sources
6
sources
@ -1,3 +1,3 @@
|
|||||||
SHA512 (linux-6.6-rc7.tar.xz) = c554605c021dc569a22d5479a0792f5fc23a949a9fb76343ee3594b72514f2950611db69d4f1ab5a8d390ed979fd41a87aee080bbebf78c9cfc882e608ab63e3
|
SHA512 (linux-6.6-rc7-18-gd88520ad73b7.tar.xz) = def0ee2feec1780c60049aa4fdb8d06fc16052a680712044750f0338af2a07d1c08e03db2fcae2163ea2196e935013740fee692fd72a82efa0bf83d24a8b248e
|
||||||
SHA512 (kernel-abi-stablelists-6.6.0.tar.bz2) = 896b1b24617e3a6905c26dd2a50b23ff2e2c7627f6b6dc12b328d5f74109016722b4ba050c5051886cb597308a793366346a34d7ec82a658b646d5288b347ae7
|
SHA512 (kernel-abi-stablelists-6.6.0.tar.bz2) = e71711bc322fd6c936efc31ee25054dfc85e21dd7cdbecf151dcff39eadcd3ac32d769667957687d7816c733c824ef8d5d8af30a3bcf4725b28833194a926ec8
|
||||||
SHA512 (kernel-kabi-dw-6.6.0.tar.bz2) = f98c14408c8434ecd253c6781c4f918cf1497da7bd55a79382fcf9dc67512d48e9357825c99a960616d2a9403d55be46989344cd201f762fd5450a2115e43c2a
|
SHA512 (kernel-kabi-dw-6.6.0.tar.bz2) = 7ba67c6e5874e4336adfa4dbe459d27c256367e0355d77d4b02ca067ee3a65dd1876aa58b7c1d93c5a293d86b6041403f2aca9bfb58564ccd4b393cce468bbef
|
||||||
|
Loading…
Reference in New Issue
Block a user