kernel-6.5.0-0.rc6.20230815git91aa6c412d7f.44

* Tue Aug 15 2023 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.5.0-0.rc6.91aa6c412d7f.44.el130]
- CI: rawhide_release: switch to using script to push (Don Zickus)
- redhat/self-test: Update self-test data (Prarit Bhargava)
- redhat/scripts/cross-compile: Update download_cross.sh (Prarit Bhargava)
- redhat/Makefile.cross: Remove ARCH selection code (Prarit Bhargava)
- redhat/Makefile.cross: Update script (Prarit Bhargava)
- Fix interruptible non MR jobs (Michael Hofmann)
- Linux v6.5.0-0.rc6.91aa6c412d7f
Resolves:

Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
This commit is contained in:
Justin M. Forbes 2023-08-15 11:48:10 -05:00
parent 5c30685a34
commit b9b372011a
No known key found for this signature in database
GPG Key ID: B8FA7924A4B1C140
5 changed files with 506 additions and 221 deletions

View File

@ -12,7 +12,7 @@ RHEL_MINOR = 99
#
# Use this spot to avoid future merge conflicts.
# Do not trim this comment.
RHEL_RELEASE = 43
RHEL_RELEASE = 44
#
# RHEL_REBASE_NUM

View File

@ -1,3 +1,21 @@
"https://gitlab.com/cki-project/kernel-ark/-/commit"/31a8a6b4003446a250fa9f7ee97de71720331c1f
31a8a6b4003446a250fa9f7ee97de71720331c1f [redhat] kernel/rh_messages.c: move hardware tables to rh_messages.h
"https://gitlab.com/cki-project/kernel-ark/-/commit"/0f6fbe653a0a7943a1c36ee4f47395ea30b79c75
0f6fbe653a0a7943a1c36ee4f47395ea30b79c75 [redhat] kernel/rh_messages.c: Wire up new calls
"https://gitlab.com/cki-project/kernel-ark/-/commit"/b73e031eb85ee3e0755203421a1b6ad153216568
b73e031eb85ee3e0755203421a1b6ad153216568 [redhat] drivers/pci: Update rh_messages.c
"https://gitlab.com/cki-project/kernel-ark/-/commit"/edb8831394cd8eddf069a09842f464bfc8a957a7
edb8831394cd8eddf069a09842f464bfc8a957a7 [redhat] drivers/message/fusion/mptspi.c: Remove extra disabled warning
"https://gitlab.com/cki-project/kernel-ark/-/commit"/635b364c987e7559bc20d3f22822a514b56ac33d
635b364c987e7559bc20d3f22822a514b56ac33d [redhat] mptsas: Remove add_taint()
"https://gitlab.com/cki-project/kernel-ark/-/commit"/b8cb66e488122646b260a080f683d8746a145ebb
b8cb66e488122646b260a080f683d8746a145ebb [redhat] drivers/pci: Remove RHEL-only pci_hw_*() functions
"https://gitlab.com/cki-project/kernel-ark/-/commit"/7ba2fc7e001181fe630e92a4633e76a6c71689e1
7ba2fc7e001181fe630e92a4633e76a6c71689e1 scsi: sd: Add "probe_type" module parameter to allow synchronous probing

View File

@ -162,13 +162,13 @@ Summary: The Linux kernel
%define specrpmversion 6.5.0
%define specversion 6.5.0
%define patchversion 6.5
%define pkgrelease 0.rc6.43
%define pkgrelease 0.rc6.20230815git91aa6c412d7f.44
%define kversion 6
%define tarfile_release 6.5-rc6
%define tarfile_release 6.5-rc6-27-g91aa6c412d7f
# This is needed to do merge window version magic
%define patchlevel 5
# This allows pkg_release to have configurable %%{?dist} tag
%define specrelease 0.rc6.43%{?buildid}%{?dist}
%define specrelease 0.rc6.20230815git91aa6c412d7f.44%{?buildid}%{?dist}
# This defines the kabi tarball version
%define kabiversion 6.5.0
@ -3713,6 +3713,15 @@ fi\
#
#
%changelog
* Tue Aug 15 2023 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.5.0-0.rc6.91aa6c412d7f.44.el130]
- CI: rawhide_release: switch to using script to push (Don Zickus)
- redhat/self-test: Update self-test data (Prarit Bhargava)
- redhat/scripts/cross-compile: Update download_cross.sh (Prarit Bhargava)
- redhat/Makefile.cross: Remove ARCH selection code (Prarit Bhargava)
- redhat/Makefile.cross: Update script (Prarit Bhargava)
- Fix interruptible non MR jobs (Michael Hofmann)
- Linux v6.5.0-0.rc6.91aa6c412d7f
* Mon Aug 14 2023 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.5.0-0.rc6.43.el127]
- Linux v6.5.0-0.rc6

View File

@ -22,13 +22,13 @@
drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 +
drivers/input/rmi4/rmi_driver.c | 124 +++--
drivers/iommu/iommu.c | 22 +
drivers/message/fusion/mptsas.c | 10 +
drivers/message/fusion/mptspi.c | 11 +
drivers/message/fusion/mptsas.c | 5 +
drivers/message/fusion/mptspi.c | 6 +
drivers/net/wireguard/main.c | 6 +
drivers/nvme/host/core.c | 22 +-
drivers/nvme/host/multipath.c | 19 +-
drivers/nvme/host/nvme.h | 4 +
drivers/pci/pci-driver.c | 78 ++++
drivers/pci/pci-driver.c | 7 +
drivers/pci/quirks.c | 24 +
drivers/scsi/aacraid/linit.c | 2 +
drivers/scsi/be2iscsi/be_main.c | 2 +
@ -42,27 +42,29 @@
drivers/usb/core/hub.c | 7 +
fs/afs/main.c | 3 +
include/linux/efi.h | 22 +-
include/linux/kernel.h | 21 +
include/linux/kernel.h | 14 +
include/linux/lsm_hook_defs.h | 2 +
include/linux/module.h | 1 +
include/linux/module.h | 5 +
include/linux/panic.h | 18 +-
include/linux/pci.h | 16 +
include/linux/pci.h | 5 +
include/linux/rh_kabi.h | 515 +++++++++++++++++++++
include/linux/rmi.h | 1 +
include/linux/security.h | 5 +
init/main.c | 3 +
kernel/Makefile | 1 +
kernel/bpf/syscall.c | 23 +
kernel/module/main.c | 2 +
kernel/module/main.c | 7 +
kernel/module/signing.c | 9 +-
kernel/panic.c | 13 +
kernel/rh_messages.c | 209 +++++++++
kernel/rh_messages.c | 414 +++++++++++++++++
kernel/rh_messages.h | 109 +++++
scripts/mod/modpost.c | 8 +
scripts/tags.sh | 2 +
security/integrity/platform_certs/load_uefi.c | 6 +-
security/lockdown/Kconfig | 13 +
security/lockdown/lockdown.c | 1 +
security/security.c | 12 +
64 files changed, 1552 insertions(+), 188 deletions(-)
66 files changed, 1779 insertions(+), 188 deletions(-)
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
index 722b6eca2e93..59a26ed5aa96 100644
@ -1116,22 +1118,10 @@ index caaf563d38ae..d9c4d039c4e7 100644
* iommu_setup_default_domain - Set the default_domain for the group
* @group: Group to change
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index 86f16f3ea478..0ad9759ab0c1 100644
index 86f16f3ea478..499dc34a5e66 100644
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
@@ -5320,6 +5320,11 @@ mptsas_probe(struct pci_dev *pdev, const struct pci_device_id *id)
ioc, MPI_SAS_OP_CLEAR_ALL_PERSISTENT);
}
+#ifdef CONFIG_RHEL_DIFFERENCES
+ add_taint(TAINT_SUPPORT_REMOVED, LOCKDEP_STILL_OK);
+ pr_warn("MPTSAS MODULE IS NOT SUPPORTED\n");
+#endif
+
error = scsi_add_host(sh, &ioc->pcidev->dev);
if (error) {
dprintk(ioc, printk(MYIOC_s_ERR_FMT
@@ -5383,6 +5388,10 @@ static void mptsas_remove(struct pci_dev *pdev)
@@ -5383,6 +5383,10 @@ static void mptsas_remove(struct pci_dev *pdev)
}
static struct pci_device_id mptsas_pci_table[] = {
@ -1142,7 +1132,7 @@ index 86f16f3ea478..0ad9759ab0c1 100644
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1064,
PCI_ANY_ID, PCI_ANY_ID },
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068,
@@ -5395,6 +5404,7 @@ static struct pci_device_id mptsas_pci_table[] = {
@@ -5395,6 +5399,7 @@ static struct pci_device_id mptsas_pci_table[] = {
PCI_ANY_ID, PCI_ANY_ID },
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068_820XELP,
PCI_ANY_ID, PCI_ANY_ID },
@ -1151,7 +1141,7 @@ index 86f16f3ea478..0ad9759ab0c1 100644
};
MODULE_DEVICE_TABLE(pci, mptsas_pci_table);
diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c
index 6c5920db1e9d..c20e21e3d70a 100644
index 6c5920db1e9d..dfbc97b68e6a 100644
--- a/drivers/message/fusion/mptspi.c
+++ b/drivers/message/fusion/mptspi.c
@@ -1238,12 +1238,17 @@ static struct spi_function_template mptspi_transport_functions = {
@ -1172,15 +1162,10 @@ index 6c5920db1e9d..c20e21e3d70a 100644
{0} /* Terminating entry */
};
MODULE_DEVICE_TABLE(pci, mptspi_pci_table);
@@ -1534,6 +1539,12 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
@@ -1534,6 +1539,7 @@ mptspi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
0, 0, 0, 0, 5);
scsi_scan_host(sh);
+
+#ifdef CONFIG_RHEL_DIFFERENCES
+ add_taint(TAINT_SUPPORT_REMOVED, LOCKDEP_STILL_OK);
+ pr_warn("MPTSPI MODULE IS NOT SUPPORTED\n");
+#endif
+
return 0;
@ -1346,7 +1331,7 @@ index f35647c470af..e57357f23306 100644
{
}
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
index ae9baf801681..4e01e6192f16 100644
index ae9baf801681..55648c5fe49e 100644
--- a/drivers/pci/pci-driver.c
+++ b/drivers/pci/pci-driver.c
@@ -19,6 +19,7 @@
@ -1357,90 +1342,19 @@ index ae9baf801681..4e01e6192f16 100644
#include <linux/dma-map-ops.h>
#include <linux/iommu.h>
#include "pci.h"
@@ -296,6 +297,83 @@ static struct attribute *pci_drv_attrs[] = {
};
ATTRIBUTE_GROUPS(pci_drv);
@@ -321,6 +322,12 @@ static long local_pci_probe(void *_ddi)
*/
pm_runtime_get_sync(dev);
pci_dev->driver = pci_drv;
+
+#ifdef CONFIG_RHEL_DIFFERENCES
+/**
+ * pci_hw_deprecated - Tell if a PCI device is deprecated
+ * @ids: array of PCI device id structures to search in
+ * @dev: the PCI device structure to match against
+ *
+ * Used by a driver to check whether this device is in its list of deprecated
+ * devices. Returns the matching pci_device_id structure or %NULL if there is
+ * no match.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+const struct pci_device_id *pci_hw_deprecated(const struct pci_device_id *ids,
+ struct pci_dev *dev)
+{
+ const struct pci_device_id *ret = pci_match_id(ids, dev);
+
+ if (!ret)
+ return NULL;
+
+ mark_hardware_deprecated(dev_driver_string(&dev->dev), "%04X:%04X @ %s",
+ dev->device, dev->vendor, pci_name(dev));
+ return ret;
+}
+EXPORT_SYMBOL(pci_hw_deprecated);
+
+/**
+ * pci_hw_unmaintained - Tell if a PCI device is unmaintained
+ * @ids: array of PCI device id structures to search in
+ * @dev: the PCI device structure to match against
+ *
+ * Used by a driver to check whether this device is in its list of unmaintained
+ * devices. Returns the matching pci_device_id structure or %NULL if there is
+ * no match.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+const struct pci_device_id *pci_hw_unmaintained(const struct pci_device_id *ids,
+ struct pci_dev *dev)
+{
+ const struct pci_device_id *ret = pci_match_id(ids, dev);
+
+ if (!ret)
+ return NULL;
+
+ mark_hardware_unmaintained(dev_driver_string(&dev->dev), "%04X:%04X @ %s",
+ dev->device, dev->vendor, pci_name(dev));
+ return ret;
+}
+EXPORT_SYMBOL(pci_hw_unmaintained);
+
+/**
+ * pci_hw_disabled - Tell if a PCI device is disabled
+ * @ids: array of PCI device id structures to search in
+ * @dev: the PCI device structure to match against
+ *
+ * Used by a driver to check whether this device is in its list of disabled
+ * devices. Returns the matching pci_device_id structure or %NULL if there is
+ * no match.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+const struct pci_device_id *pci_hw_disabled(const struct pci_device_id *ids,
+ struct pci_dev *dev)
+{
+ const struct pci_device_id *ret = pci_match_id(ids, dev);
+
+ if (!ret)
+ return NULL;
+
+ mark_hardware_disabled(dev_driver_string(&dev->dev), "%04X:%04X @ %s",
+ dev->device, dev->vendor, pci_name(dev));
+ return ret;
+}
+EXPORT_SYMBOL(pci_hw_disabled);
+ if (pci_rh_check_status(pci_dev))
+ return -EACCES;
+#endif
+
struct drv_dev_and_id {
struct pci_driver *drv;
struct pci_dev *dev;
rc = pci_drv->probe(pci_dev, ddi->id);
if (!rc)
return rc;
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 321156ca273d..fc399e56ec8f 100644
--- a/drivers/pci/quirks.c
@ -1859,10 +1773,10 @@ index ab088c662e88..f974f9d9a7c5 100644
enum efi_secureboot_mode efi_get_secureboot_mode(efi_get_variable_t *get_var)
{
diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 0d91e0af0125..d83e42ef8dd5 100644
index 0d91e0af0125..9fbf61a303bc 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -481,4 +481,25 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
@@ -481,4 +481,18 @@ static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
/* OTHER_WRITABLE? Generally considered a bad idea. */ \
BUILD_BUG_ON_ZERO((perms) & 2) + \
(perms))
@ -1871,18 +1785,11 @@ index 0d91e0af0125..d83e42ef8dd5 100644
+
+#ifdef CONFIG_RHEL_DIFFERENCES
+void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...);
+void mark_driver_unmaintained(const char *driver_name);
+void mark_hardware_deprecated(const char *driver_name, char *fmt, ...);
+void mark_driver_deprecated(const char *driver_name);
+void mark_hardware_disabled(const char *driver_name, char *fmt, ...);
+void mark_tech_preview(const char *msg, struct module *mod);
+void mark_partner_supported(const char *msg, struct module *mod);
+void init_rh_check_status(char *fn_name);
+#else
+static inline void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...) { }
+static inline void mark_driver_unmaintained(const char *driver_name) { }
+static inline void mark_hardware_deprecated(const char *driver_name, char *fmt, ...) { }
+static inline void mark_driver_deprecated(const char *driver_name) { }
+static inline void mark_hardware_disabled(const char *driver_name, char *fmt, ...) { }
+static inline void mark_tech_preview(const char *msg, struct module *mod) { }
+static inline void mark_partner_supported(const char *msg, struct module *mod) { }
+#endif
@ -1902,7 +1809,7 @@ index 7308a1a7599b..a3aa26339b43 100644
#ifdef CONFIG_PERF_EVENTS
LSM_HOOK(int, 0, perf_event_open, struct perf_event_attr *attr, int type)
diff --git a/include/linux/module.h b/include/linux/module.h
index a98e188cf37b..2eef4246c2c9 100644
index a98e188cf37b..059c2f633ef6 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -418,6 +418,7 @@ struct module {
@ -1913,6 +1820,15 @@ index a98e188cf37b..2eef4246c2c9 100644
struct kobject *holders_dir;
/* Exported symbols */
@@ -988,4 +989,8 @@ static inline unsigned long find_kallsyms_symbol_value(struct module *mod,
#endif /* CONFIG_MODULES && CONFIG_KALLSYMS */
+#ifdef CONFIG_RHEL_DIFFERENCES
+void module_rh_check_status(const char * module_name);
+#endif
+
#endif /* _LINUX_MODULE_H */
diff --git a/include/linux/panic.h b/include/linux/panic.h
index 6717b15e798c..8e1d3eae1686 100644
--- a/include/linux/panic.h
@ -1943,32 +1859,28 @@ index 6717b15e798c..8e1d3eae1686 100644
struct taint_flag {
diff --git a/include/linux/pci.h b/include/linux/pci.h
index c69a2cc1f412..27da72fdff38 100644
index c69a2cc1f412..b9ae5eb4c66d 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1560,6 +1560,22 @@ int pci_add_dynid(struct pci_driver *drv,
@@ -1560,6 +1560,7 @@ int pci_add_dynid(struct pci_driver *drv,
unsigned long driver_data);
const struct pci_device_id *pci_match_id(const struct pci_device_id *ids,
struct pci_dev *dev);
+
+#ifdef CONFIG_RHEL_DIFFERENCES
+const struct pci_device_id *pci_hw_deprecated(const struct pci_device_id *ids,
+ struct pci_dev *dev);
+const struct pci_device_id *pci_hw_unmaintained(const struct pci_device_id *ids,
+ struct pci_dev *dev);
+const struct pci_device_id *pci_hw_disabled(const struct pci_device_id *ids,
+ struct pci_dev *dev);
+#else
+static inline const struct pci_device_id *pci_hw_deprecated(const struct pci_device_id *ids,
+ struct pci_dev *dev) { return NULL; }
+static inline const struct pci_device_id *pci_hw_unmaintained(const struct pci_device_id *ids,
+ struct pci_dev *dev) { return NULL; }
+static inline const struct pci_device_id *pci_hw_disabled(const struct pci_device_id *ids,
+ struct pci_dev *dev) {return NULL; }
+#endif
int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
int pass);
@@ -2578,6 +2579,10 @@ static inline bool pci_is_thunderbolt_attached(struct pci_dev *pdev)
return false;
}
+#ifdef CONFIG_RHEL_DIFFERENCES
+bool pci_rh_check_status(struct pci_dev *pci_dev);
+#endif
+
#if defined(CONFIG_PCIEPORTBUS) || defined(CONFIG_EEH)
void pci_uevent_ers(struct pci_dev *pdev, enum pci_ers_result err_type);
#endif
diff --git a/include/linux/rh_kabi.h b/include/linux/rh_kabi.h
new file mode 100644
index 000000000000..c7b42c1f1681
@ -2525,6 +2437,20 @@ index 32828502f09e..b5c27505fa16 100644
#endif /* CONFIG_SECURITY */
#if defined(CONFIG_SECURITY) && defined(CONFIG_WATCH_QUEUE)
diff --git a/init/main.c b/init/main.c
index ad920fac325c..5ff72cc9c7e3 100644
--- a/init/main.c
+++ b/init/main.c
@@ -1147,6 +1147,9 @@ static bool __init_or_module initcall_blacklisted(initcall_t fn)
*/
strreplace(fn_name, ' ', '\0');
+#ifdef CONFIG_RHEL_DIFFERENCES
+ init_rh_check_status(fn_name);
+#endif
list_for_each_entry(entry, &blacklisted_initcalls, next) {
if (!strcmp(fn_name, entry->buf)) {
pr_debug("initcall %s blacklisted\n", fn_name);
diff --git a/kernel/Makefile b/kernel/Makefile
index 3947122d618b..5b9462a450a1 100644
--- a/kernel/Makefile
@ -2586,7 +2512,7 @@ index a2aef900519c..b872a64be8fd 100644
}
diff --git a/kernel/module/main.c b/kernel/module/main.c
index 59b1d067e528..b49c20c89bed 100644
index 59b1d067e528..0b1c207dcd4f 100644
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
@@ -528,6 +528,7 @@ static struct module_attribute modinfo_##field = { \
@ -2605,6 +2531,18 @@ index 59b1d067e528..b49c20c89bed 100644
&modinfo_initstate,
&modinfo_coresize,
#ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC
@@ -2794,6 +2796,11 @@ static int early_mod_check(struct load_info *info, int flags)
return -EPERM;
}
+#ifdef CONFIG_RHEL_DIFFERENCES
+ if (get_modinfo(info, "intree"))
+ module_rh_check_status(info->name);
+#endif
+
err = rewrite_section_headers(info, flags);
if (err)
return err;
diff --git a/kernel/module/signing.c b/kernel/module/signing.c
index a2ff4242e623..f0d2be1ee4f1 100644
--- a/kernel/module/signing.c
@ -2654,14 +2592,10 @@ index 10effe40a3fa..f49ce6660929 100644
/**
diff --git a/kernel/rh_messages.c b/kernel/rh_messages.c
new file mode 100644
index 000000000000..018800f35ff2
index 000000000000..48a6bb6c9b38
--- /dev/null
+++ b/kernel/rh_messages.c
@@ -0,0 +1,209 @@
+#include <linux/kernel.h>
+#include <linux/module.h>
+
+#define DEV_DESC_LEN 256
@@ -0,0 +1,414 @@
+/*
+ * The following functions are used by Red Hat to indicate to users that
+ * hardware and drivers are unsupported, or have limited support in RHEL major
@ -2679,6 +2613,11 @@ index 000000000000..018800f35ff2
+ * related fixes until they are disabled.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/pci.h>
+#include "rh_messages.h"
+
+/**
+ * mark_hardware_unmaintained() - Mark hardware as unmaintained.
+ * @driver_name: driver name
@ -2687,13 +2626,16 @@ index 000000000000..018800f35ff2
+ *
+ * Called to notify users that the device will no longer be tested on a routine
+ * basis and driver code associated with this device is no longer being updated.
+ * Red Hat may fix security-related and critical issues. Support for this device
+ * will be disabled in a future major release and users deploying this device
+ * should plan to replace the device in production systems.
+ * Red Hat may, at their own discretion, fix security-related and critical
+ * issues. Support for this device will be disabled in a future major release
+ * and users deploying this device should plan to replace the device in
+ * production systems.
+ *
+ * This function should be used when the driver's usage can be tied to a
+ * specific hardware device. For example, a network device driver loading on a
+ * specific device that is no longer maintained by the manufacturer.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...)
+{
@ -2702,33 +2644,13 @@ index 000000000000..018800f35ff2
+
+ va_start(args, fmt);
+ vsnprintf(device_description, DEV_DESC_LEN, fmt, args);
+ pr_crit("Warning: Unmaintained hardware is detected: %s:%s\n", driver_name,
+ device_description);
+ pr_crit(RH_UNMAINT_HW,
+ driver_name, device_description);
+ va_end(args);
+}
+EXPORT_SYMBOL(mark_hardware_unmaintained);
+
+/**
+ * mark_driver_unmaintained() - Mark a driver as unmaintained.
+ * @driver_name: driver name
+ *
+ * Called to notify users that a driver will no longer be tested on a routine
+ * basis and the driver code is no longer being updated. Red Hat may fix
+ * security-related and critical issues. Support for this driver will be
+ * disabled in a future major release, and users should replace any affected
+ * devices in production systems.
+ *
+ * This function should be used when a driver's usage cannot be tied to a
+ * specific hardware device. For example, a network bonding driver or a higher
+ * level storage layer driver that is no longer maintained upstream.
+ */
+void mark_driver_unmaintained(const char *driver_name)
+{
+ pr_crit("Warning: Unmaintained driver is detected: %s\n", driver_name);
+}
+EXPORT_SYMBOL(mark_driver_unmaintained);
+
+/**
+ * mark_hardware_deprecated() - Mark hardware as deprecated.
+ * @driver_name: driver name
+ * @fmt: format for device description
@ -2742,6 +2664,8 @@ index 000000000000..018800f35ff2
+ * This function should be used when the driver's usage can be tied to a
+ * specific hardware device. For example, a network device driver loading on a
+ * specific device that is no longer maintained by the manufacturer.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+void mark_hardware_deprecated(const char *driver_name, char *fmt, ...)
+{
@ -2750,32 +2674,10 @@ index 000000000000..018800f35ff2
+
+ va_start(args, fmt);
+ vsnprintf(device_description, DEV_DESC_LEN, fmt, args);
+ pr_crit("Warning: Deprecated Hardware is detected: %s:%s will not be maintained in a future major release and may be disabled\n",
+ pr_crit(RH_DEPRECATED_HW,
+ driver_name, device_description);
+ va_end(args);
+}
+EXPORT_SYMBOL(mark_hardware_deprecated);
+
+/**
+ * mark_driver_deprecated() - Mark a driver as deprecated.
+ * @driver_name: driver name
+ *
+ * Called to notify users that support for this driver is planned to be
+ * unmaintained in a future major release, and will eventually be disabled in a
+ * future major release. This driver should not be used in new production
+ * environments and users should replace any affected devices in production
+ * systems.
+ *
+ * This function should be used when a driver's usage cannot be tied to a
+ * specific hardware device. For example, a network bonding driver or a higher
+ * level storage layer driver that is no longer maintained upstream.
+ */
+void mark_driver_deprecated(const char *driver_name)
+{
+ pr_crit("Warning: Deprecated Driver is detected: %s will not be maintained in a future major release and may be disabled\n",
+ driver_name);
+}
+EXPORT_SYMBOL(mark_driver_deprecated);
+
+/**
+ * mark_hardware_disabled() - Mark a driver as removed.
@ -2791,19 +2693,199 @@ index 000000000000..018800f35ff2
+ * This function should be used when the driver's usage can be tied to a
+ * specific hardware device. For example, a network device driver loading on a
+ * specific device that is no longer maintained by the manufacturer.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+void mark_hardware_disabled(const char *driver_name, char *fmt, ...)
+static void mark_hardware_disabled(const char *driver_name, char *fmt, ...)
+{
+ char device_description[DEV_DESC_LEN];
+ va_list args;
+
+ va_start(args, fmt);
+ vsnprintf(device_description, DEV_DESC_LEN, fmt, args);
+ pr_crit("Warning: Disabled Hardware is detected: %s:%s is no longer enabled in this release.\n",
+ pr_crit(RH_DISABLED_HW,
+ driver_name, device_description);
+ va_end(args);
+}
+EXPORT_SYMBOL(mark_hardware_disabled);
+
+#ifdef CONFIG_PCI
+/**
+ * pci_hw_deprecated() - Mark a PCI device deprecated.
+ * @dev: the PCI device structure to match against
+ *
+ * Called to check if this @dev is in the list of deprecated devices.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+static void pci_hw_deprecated(struct pci_dev *dev)
+{
+ const struct pci_device_id *ret = pci_match_id(rh_deprecated_pci_devices, dev);
+
+ if (!ret)
+ return;
+
+ mark_hardware_deprecated(dev_driver_string(&dev->dev), "%04X:%04X @ %s",
+ dev->device, dev->vendor, pci_name(dev));
+}
+
+/**
+ * pci_hw_unmaintained() - Mark a PCI device unmaintained.
+ * @dev: the PCI device structure to match against
+ *
+ * Called to check if this @dev is in the list of unmaintained devices.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+static void pci_hw_unmaintained(struct pci_dev *dev)
+{
+ const struct pci_device_id *ret = pci_match_id(rh_unmaintained_pci_devices, dev);
+
+ if (!ret)
+ return;
+
+ mark_hardware_unmaintained(dev_driver_string(&dev->dev), "%04X:%04X @ %s",
+ dev->device, dev->vendor, pci_name(dev));
+}
+
+/**
+ * pci_hw_disabled() - Mark a PCI device disabled.
+ * @dev: the PCI device structure to match against
+ *
+ * Called to check if this @dev is in the list of disabled devices.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+static bool pci_hw_disabled(struct pci_dev *dev)
+{
+ const struct pci_device_id *ret = pci_match_id(rh_disabled_pci_devices, dev);
+
+ if (!ret)
+ return false;
+
+ mark_hardware_disabled(dev_driver_string(&dev->dev), "%04X:%04X @ %s",
+ dev->device, dev->vendor, pci_name(dev));
+ return true;
+}
+#endif
+
+/**
+ * driver_unmaintained() - check to see if a driver is unmaintained
+ * @module_name: module name
+ *
+ * Called to notify users that a driver will no longer be tested on a routine
+ * basis and the driver code is no longer being updated. Red Hat may fix
+ * security-related and critical issues. Support for this driver will be
+ * disabled in a future major release, and users should replace any affected
+ * devices in production systems.
+ *
+ * This function should be used when a driver's usage cannot be tied to a
+ * specific hardware device. For example, a network bonding driver or a higher
+ * level storage layer driver that is no longer maintained upstream.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+static void driver_unmaintained(const char* module_name)
+{
+ int i = 0;
+
+ while (rh_unmaintained_drivers[i]) {
+ if (strcmp(rh_unmaintained_drivers[i], module_name) == 0) {
+ pr_crit(RH_UNMAINT_DR, module_name);
+ return;
+ }
+ i++;
+ }
+}
+
+/**
+ * driver_deprecated() - check to see if a driver is deprecated
+ * @driver_name: module name
+ *
+ * Called to notify users that support for this driver is planned to be
+ * unmaintained in a future major release, and will eventually be disabled in a
+ * future major release. This driver should not be used in new production
+ * environments and users should replace any affected devices in production
+ * systems.
+ *
+ * This function should be used when a driver's usage cannot be tied to a
+ * specific hardware device. For example, a network bonding driver or a higher
+ * level storage layer driver that is no longer maintained upstream.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+static void driver_deprecated(const char* module_name)
+{
+ int i = 0;
+
+ while (rh_deprecated_drivers[i]) {
+ if (strcmp(rh_deprecated_drivers[i], module_name) == 0) {
+ pr_crit(RH_DEPRECATED_DR, module_name);
+ return;
+ }
+ i++;
+ }
+}
+
+/* There is no driver_disabled() function. Disabled drivers are configured off ;). */
+
+/**
+ * init_fn_unmaintained - check to see if a built-in driver is unmaintained.
+ * @fn_name: module's module_init function name
+ *
+ * Called to notify users that a built-in driver will no longer be tested on a routine
+ * basis and the built-in driver code is no longer being updated. Red Hat may fix
+ * security-related and critical issues. Support for this built-in driver will be
+ * disabled in a future major release, and users should replace any affected
+ * devices in production systems.
+ *
+ * This function should be used when a built-in driver's usage cannot be tied to a
+ * specific hardware device. For example, a network bonding driver or a higher
+ * level storage layer driver that is no longer maintained upstream.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+
+static void init_fn_unmaintained(char* fn_name)
+{
+ int i = 0;
+
+ while (rh_unmaintained_init_fns[i]) {
+ if (strcmp(rh_unmaintained_init_fns[i], fn_name) == 0) {
+ pr_crit(RH_UNMAINT_DR, fn_name);
+ return;
+ }
+ i++;
+ }
+}
+
+/**
+ * init_fn_deprecated() - check to see if a built-in driver is deprecated
+ * @fn_name: module's module_init function name
+ *
+ * Called to notify users that support for this built-in driver is planned to be
+ * unmaintained in a future major release, and will eventually be disabled in a
+ * future major release. This driver should not be used in new production
+ * environments and users should replace any affected devices in production
+ * systems.
+ *
+ * This function should be used when a built-in driver's usage cannot be tied to a
+ * specific hardware device. For example, a network bonding driver or a higher
+ * level storage layer driver that is no longer maintained upstream.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+static void init_fn_deprecated(char* fn_name)
+{
+ int i = 0;
+
+ while (rh_deprecated_init_fns[i]) {
+ if (strcmp(rh_deprecated_init_fns[i], fn_name) == 0) {
+ pr_crit(RH_DEPRECATED_DR, fn_name);
+ return;
+ }
+ i++;
+ }
+}
+
+/**
+ * mark_tech_preview() - Mark driver or kernel subsystem as 'Tech Preview'
@ -2815,6 +2897,8 @@ index 000000000000..018800f35ff2
+ * minor release. The next RHEL minor release may contain full support for
+ * this driver. Red Hat does not guarantee that bugs reported against this
+ * driver or subsystem will be resolved.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+void mark_tech_preview(const char *msg, struct module *mod)
+{
@ -2827,9 +2911,7 @@ index 000000000000..018800f35ff2
+ str = mod->name;
+#endif
+
+ pr_warn("TECH PREVIEW: %s may not be fully supported.\n"
+ "Please review provided documentation for limitations.\n",
+ (str ? str : "kernel"));
+ pr_warn(RH_TECH_PREVIEW, (str ? str : "kernel"));
+ add_taint(TAINT_AUX, LOCKDEP_STILL_OK);
+#ifdef CONFIG_MODULES
+ if (mod)
@ -2842,31 +2924,207 @@ index 000000000000..018800f35ff2
+ * mark_partner_supported() - Mark driver or kernel subsystem as 'Partner Supported'
+ * @msg: Driver or kernel subsystem name
+ *
+ * Called to clarify the support status of a driver. This does TAINT the
+ * kernel. Calling this function indicates that the driver or subsystem is
+ * supported by one of our partners and not by Red Hat directly.
+ * Called to minimize the support status of a new driver. This does TAINT the
+ * kernel. Calling this function indicates that the driver or subsystem
+ * is not supported directly by Red Hat but by a partner engineer.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+void mark_partner_supported(const char *msg, struct module *mod)
+{
+ const char *str = NULL;
+ const char *str = NULL;
+
+ if (msg)
+ str = msg;
+ if (msg)
+ str = msg;
+#ifdef CONFIG_MODULES
+ else if (mod)
+ str = mod->name;
+#endif
+
+ pr_warn("Notice: %s is a Partner Supported GPL module and not supported directly by Red Hat.\n"
+ "Please contact your provider for support.\n",
+ (str ? str : "kernel"));
+ add_taint(TAINT_PARTNER_SUPPORTED, LOCKDEP_STILL_OK);
+ pr_warn(RH_PARTNER_SUPPORTED, (str ? str : "kernel"));
+ add_taint(TAINT_PARTNER_SUPPORTED, LOCKDEP_STILL_OK);
+#ifdef CONFIG_MODULES
+ if (mod)
+ mod->taints |= (1U << TAINT_PARTNER_SUPPORTED);
+ if (mod)
+ mod->taints |= (1U << TAINT_PARTNER_SUPPORTED);
+#endif
+}
+EXPORT_SYMBOL(mark_partner_supported);
+
+/*
+ *
+ * Functions called by 'main' kernel code.
+ *
+ */
+
+#ifdef CONFIG_PCI
+/**
+ * pci_rh_check_status - checks the status of a PCI device.
+ * @pci_dev: PCI device to be examined
+ *
+ * This function is called by the PCI driver subsystem to check the status of a
+ * PCI device.
+ *
+ * This function returns true if the PCI device is disabled, and false otherwise.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+bool pci_rh_check_status(struct pci_dev *pci_dev)
+{
+ if (pci_dev->driver->driver.owner != NULL) {
+ if (!test_bit(TAINT_OOT_MODULE, &pci_dev->driver->driver.owner->taints)) {
+ pci_hw_unmaintained(pci_dev);
+ pci_hw_deprecated(pci_dev);
+ return pci_hw_disabled(pci_dev);
+ }
+ }
+ return false;
+}
+#endif
+
+/** module_rh_check_status - checks the status of a module.
+ * @module_name: Name of module to be examined
+ *
+ * This function is called by the module loading code to check the status of a
+ * module.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+void module_rh_check_status(const char * module_name)
+{
+ driver_unmaintained(module_name);
+ driver_deprecated(module_name);
+}
+
+/**
+ * init_rh_check_status - checks the status of a built-in module.
+ * @fn_name: init function of module to be examined
+ *
+ * This function is called by the init code to check the status of a built-in module.
+ * When a module is built-in, the module_init() function is converted into an initcall.
+ * The initcall is the called during boot with the other system initcalls.
+ *
+ * Reserved for Internal Red Hat use only.
+ */
+void init_rh_check_status(char *fn_name)
+{
+ init_fn_deprecated(fn_name);
+ init_fn_unmaintained(fn_name);
+}
diff --git a/kernel/rh_messages.h b/kernel/rh_messages.h
new file mode 100644
index 000000000000..616692b1ac11
--- /dev/null
+++ b/kernel/rh_messages.h
@@ -0,0 +1,109 @@
+/*
+ * WARNING: This file is auto-generated by an internal Red Hat script and,
+ * in general, should not be modified by hand.
+ */
+
+/*
+ * The following tables are used by Red Hat to define what hardware and drivers
+ * are unsupported, or have limited support in RHEL major and minor releases.
+ *
+ * Generally, the process of disabling a driver or device in RHEL requires the
+ * driver or device to be marked as 'deprecated' in all existing releases, and
+ * then either 'unmaintained' or 'disabled' in a future release.
+ *
+ * In general, deprecated and unmaintained drivers continue to receive security
+ * related fixes until they are disabled.
+ */
+
+#ifndef __RH_MESSAGES_H
+#define __RH_MESSAGES_H
+
+#include <linux/version.h>
+#include <linux/pci.h>
+
+#define DEV_DESC_LEN 256
+
+#define RH_UNMAINT_HW "Warning: Unmaintained Hardware is detected: %s:%s\n"
+
+#define RH_UNMAINT_DR "Warning: Unmaintained driver is detected: %s\n"
+
+#define RH_DEPRECATED_HW "Warning: Deprecated Hardware is detected: %s:%s " \
+ "will not be maintained in a future major release " \
+ "and may be disabled\n"
+
+#define RH_DEPRECATED_DR "Warning: Deprecated Driver is detected: %s will " \
+ "not be maintained in a future major release and " \
+ "may be disabled\n"
+
+#define RH_DISABLED_HW "Warning: Disabled Hardware is detected: %s:%s is " \
+ "no longer enabled in this release.\n"
+
+#define RH_TECH_PREVIEW "TECH PREVIEW: %s may not be fully supported.\n" \
+ "Please review provided documentation for " \
+ "limitations.\n"
+
+#define RH_PARTNER_SUPPORTED "Warning: %s is a Partner supported GPL " \
+ "module and not supported directly by Red Hat.\n"
+
+#if RHEL_MAJOR == 9
+
+static const char *rh_deprecated_drivers[] = {
+ 0 /* Terminating entry */
+};
+
+static const char *rh_deprecated_init_fns[] = {
+ 0 /* Terminating entry */
+};
+
+static const char *rh_unmaintained_drivers[] = {
+ 0 /* Terminating entry */
+};
+
+static const char *rh_unmaintained_init_fns[] = {
+ 0 /* Terminating entry */
+};
+
+static const struct pci_device_id rh_deprecated_pci_devices[] = {
+ {0} /* Terminating entry */
+};
+
+static const struct pci_device_id rh_disabled_pci_devices[] = {
+ {0} /* Terminating entry */
+};
+
+static const struct pci_device_id rh_unmaintained_pci_devices[] = {
+ {0} /* Terminating entry */
+};
+
+#else /* RHEL-10 */
+
+static const char *rh_deprecated_drivers[] = {
+ 0 /* Terminating entry */
+};
+
+static const char *rh_deprecated_init_fns[] = {
+ 0 /* Terminating entry */
+};
+
+static const char *rh_unmaintained_drivers[] = {
+ 0 /* Terminating entry */
+};
+
+static const char *rh_unmaintained_init_fns[] = {
+ 0 /* Terminating entry */
+};
+
+static const struct pci_device_id rh_deprecated_pci_devices[] = {
+ {0} /* Terminating entry */
+};
+
+static const struct pci_device_id rh_disabled_pci_devices[] = {
+ {0} /* Terminating entry */
+};
+
+static const struct pci_device_id rh_unmaintained_pci_devices[] = {
+ {0} /* Terminating entry */
+};
+#endif /* RHEL_MAJOR */
+
+#endif /* __RH_MESSAGES_H */
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index b29b29707f10..e176487ebf1f 100644
--- a/scripts/mod/modpost.c

View File

@ -1,3 +1,3 @@
SHA512 (linux-6.5-rc6.tar.xz) = e5ac3513eb366e10cbf27c1b7994fa830626aa20c5fd6ec261b6aee7267c22000ecc31b0ec94d154c864bc361eca5539cad08006f96d6312fd3038dd9727323a
SHA512 (kernel-abi-stablelists-6.5.0.tar.bz2) = 6107f982f8ee7bb003c3338f39f7be48ea12e7d14fcc99fc193b4ca7e100409de12320451fab7b806b24d661a1937dd53e6a36093563bd3b8405b0834d627add
SHA512 (kernel-kabi-dw-6.5.0.tar.bz2) = 2705fa93054d143dce4ee74cfe2e3906c19b97ec7118ad1a95dd18c999929dd66aab267dbdfcf5be71988de0eb5073ce52169d62dd30e491475fab6bddc48a5a
SHA512 (linux-6.5-rc6-27-g91aa6c412d7f.tar.xz) = 0b12eafe62eac159bad74bebcf3e9201bf6a6a3376a69bf508a293c622ac9f5cb1a9bc32430a7fb551d4f9a2bb0b96f0ae0923856b1f919b1021c22b5a95d212
SHA512 (kernel-abi-stablelists-6.5.0.tar.bz2) = 4237bd59883c06ceb29d3f119260ceff32a22402da3e0e90b181584bbee56af585cd8a1ae9f27937dbb51afd895b507cbe2bf4887812fe64fb1823b5b3ea6d4f
SHA512 (kernel-kabi-dw-6.5.0.tar.bz2) = 3c9b4444bf1fe89cb4a08cfc05999e2b6c4233c254caad3f737e93b7dcfb0b5e6634a284ac368f5c0155564865d36f06d55575c419c03745fbe221ab6a942b3b