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:
parent
5c30685a34
commit
b9b372011a
@ -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 = 43
|
RHEL_RELEASE = 44
|
||||||
|
|
||||||
#
|
#
|
||||||
# RHEL_REBASE_NUM
|
# RHEL_REBASE_NUM
|
||||||
|
@ -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
|
"https://gitlab.com/cki-project/kernel-ark/-/commit"/7ba2fc7e001181fe630e92a4633e76a6c71689e1
|
||||||
7ba2fc7e001181fe630e92a4633e76a6c71689e1 scsi: sd: Add "probe_type" module parameter to allow synchronous probing
|
7ba2fc7e001181fe630e92a4633e76a6c71689e1 scsi: sd: Add "probe_type" module parameter to allow synchronous probing
|
||||||
|
|
||||||
|
15
kernel.spec
15
kernel.spec
@ -162,13 +162,13 @@ Summary: The Linux kernel
|
|||||||
%define specrpmversion 6.5.0
|
%define specrpmversion 6.5.0
|
||||||
%define specversion 6.5.0
|
%define specversion 6.5.0
|
||||||
%define patchversion 6.5
|
%define patchversion 6.5
|
||||||
%define pkgrelease 0.rc6.43
|
%define pkgrelease 0.rc6.20230815git91aa6c412d7f.44
|
||||||
%define kversion 6
|
%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
|
# This is needed to do merge window version magic
|
||||||
%define patchlevel 5
|
%define patchlevel 5
|
||||||
# This allows pkg_release to have configurable %%{?dist} tag
|
# 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
|
# This defines the kabi tarball version
|
||||||
%define kabiversion 6.5.0
|
%define kabiversion 6.5.0
|
||||||
|
|
||||||
@ -3713,6 +3713,15 @@ fi\
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
%changelog
|
%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]
|
* Mon Aug 14 2023 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.5.0-0.rc6.43.el127]
|
||||||
- Linux v6.5.0-0.rc6
|
- Linux v6.5.0-0.rc6
|
||||||
|
|
||||||
|
@ -22,13 +22,13 @@
|
|||||||
drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 +
|
drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 +
|
||||||
drivers/input/rmi4/rmi_driver.c | 124 +++--
|
drivers/input/rmi4/rmi_driver.c | 124 +++--
|
||||||
drivers/iommu/iommu.c | 22 +
|
drivers/iommu/iommu.c | 22 +
|
||||||
drivers/message/fusion/mptsas.c | 10 +
|
drivers/message/fusion/mptsas.c | 5 +
|
||||||
drivers/message/fusion/mptspi.c | 11 +
|
drivers/message/fusion/mptspi.c | 6 +
|
||||||
drivers/net/wireguard/main.c | 6 +
|
drivers/net/wireguard/main.c | 6 +
|
||||||
drivers/nvme/host/core.c | 22 +-
|
drivers/nvme/host/core.c | 22 +-
|
||||||
drivers/nvme/host/multipath.c | 19 +-
|
drivers/nvme/host/multipath.c | 19 +-
|
||||||
drivers/nvme/host/nvme.h | 4 +
|
drivers/nvme/host/nvme.h | 4 +
|
||||||
drivers/pci/pci-driver.c | 78 ++++
|
drivers/pci/pci-driver.c | 7 +
|
||||||
drivers/pci/quirks.c | 24 +
|
drivers/pci/quirks.c | 24 +
|
||||||
drivers/scsi/aacraid/linit.c | 2 +
|
drivers/scsi/aacraid/linit.c | 2 +
|
||||||
drivers/scsi/be2iscsi/be_main.c | 2 +
|
drivers/scsi/be2iscsi/be_main.c | 2 +
|
||||||
@ -42,27 +42,29 @@
|
|||||||
drivers/usb/core/hub.c | 7 +
|
drivers/usb/core/hub.c | 7 +
|
||||||
fs/afs/main.c | 3 +
|
fs/afs/main.c | 3 +
|
||||||
include/linux/efi.h | 22 +-
|
include/linux/efi.h | 22 +-
|
||||||
include/linux/kernel.h | 21 +
|
include/linux/kernel.h | 14 +
|
||||||
include/linux/lsm_hook_defs.h | 2 +
|
include/linux/lsm_hook_defs.h | 2 +
|
||||||
include/linux/module.h | 1 +
|
include/linux/module.h | 5 +
|
||||||
include/linux/panic.h | 18 +-
|
include/linux/panic.h | 18 +-
|
||||||
include/linux/pci.h | 16 +
|
include/linux/pci.h | 5 +
|
||||||
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 +
|
||||||
|
init/main.c | 3 +
|
||||||
kernel/Makefile | 1 +
|
kernel/Makefile | 1 +
|
||||||
kernel/bpf/syscall.c | 23 +
|
kernel/bpf/syscall.c | 23 +
|
||||||
kernel/module/main.c | 2 +
|
kernel/module/main.c | 7 +
|
||||||
kernel/module/signing.c | 9 +-
|
kernel/module/signing.c | 9 +-
|
||||||
kernel/panic.c | 13 +
|
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/mod/modpost.c | 8 +
|
||||||
scripts/tags.sh | 2 +
|
scripts/tags.sh | 2 +
|
||||||
security/integrity/platform_certs/load_uefi.c | 6 +-
|
security/integrity/platform_certs/load_uefi.c | 6 +-
|
||||||
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 +
|
||||||
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
|
diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt
|
||||||
index 722b6eca2e93..59a26ed5aa96 100644
|
index 722b6eca2e93..59a26ed5aa96 100644
|
||||||
@ -1116,22 +1118,10 @@ index caaf563d38ae..d9c4d039c4e7 100644
|
|||||||
* iommu_setup_default_domain - Set the default_domain for the group
|
* iommu_setup_default_domain - Set the default_domain for the group
|
||||||
* @group: Group to change
|
* @group: Group to change
|
||||||
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
|
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
|
--- a/drivers/message/fusion/mptsas.c
|
||||||
+++ b/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)
|
@@ -5383,6 +5383,10 @@ static void mptsas_remove(struct pci_dev *pdev)
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct pci_device_id mptsas_pci_table[] = {
|
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_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1064,
|
||||||
PCI_ANY_ID, PCI_ANY_ID },
|
PCI_ANY_ID, PCI_ANY_ID },
|
||||||
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068,
|
{ 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_ANY_ID, PCI_ANY_ID },
|
||||||
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068_820XELP,
|
{ PCI_VENDOR_ID_LSI_LOGIC, MPI_MANUFACTPAGE_DEVID_SAS1068_820XELP,
|
||||||
PCI_ANY_ID, PCI_ANY_ID },
|
PCI_ANY_ID, PCI_ANY_ID },
|
||||||
@ -1151,7 +1141,7 @@ index 86f16f3ea478..0ad9759ab0c1 100644
|
|||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(pci, mptsas_pci_table);
|
MODULE_DEVICE_TABLE(pci, mptsas_pci_table);
|
||||||
diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c
|
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
|
--- a/drivers/message/fusion/mptspi.c
|
||||||
+++ b/drivers/message/fusion/mptspi.c
|
+++ b/drivers/message/fusion/mptspi.c
|
||||||
@@ -1238,12 +1238,17 @@ static struct spi_function_template mptspi_transport_functions = {
|
@@ -1238,12 +1238,17 @@ static struct spi_function_template mptspi_transport_functions = {
|
||||||
@ -1172,15 +1162,10 @@ index 6c5920db1e9d..c20e21e3d70a 100644
|
|||||||
{0} /* Terminating entry */
|
{0} /* Terminating entry */
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(pci, mptspi_pci_table);
|
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);
|
0, 0, 0, 0, 5);
|
||||||
|
|
||||||
scsi_scan_host(sh);
|
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;
|
return 0;
|
||||||
|
|
||||||
@ -1346,7 +1331,7 @@ index f35647c470af..e57357f23306 100644
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
|
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
|
--- a/drivers/pci/pci-driver.c
|
||||||
+++ b/drivers/pci/pci-driver.c
|
+++ b/drivers/pci/pci-driver.c
|
||||||
@@ -19,6 +19,7 @@
|
@@ -19,6 +19,7 @@
|
||||||
@ -1357,90 +1342,19 @@ index ae9baf801681..4e01e6192f16 100644
|
|||||||
#include <linux/dma-map-ops.h>
|
#include <linux/dma-map-ops.h>
|
||||||
#include <linux/iommu.h>
|
#include <linux/iommu.h>
|
||||||
#include "pci.h"
|
#include "pci.h"
|
||||||
@@ -296,6 +297,83 @@ static struct attribute *pci_drv_attrs[] = {
|
@@ -321,6 +322,12 @@ static long local_pci_probe(void *_ddi)
|
||||||
};
|
*/
|
||||||
ATTRIBUTE_GROUPS(pci_drv);
|
pm_runtime_get_sync(dev);
|
||||||
|
pci_dev->driver = pci_drv;
|
||||||
|
+
|
||||||
+#ifdef CONFIG_RHEL_DIFFERENCES
|
+#ifdef CONFIG_RHEL_DIFFERENCES
|
||||||
+/**
|
+ if (pci_rh_check_status(pci_dev))
|
||||||
+ * pci_hw_deprecated - Tell if a PCI device is deprecated
|
+ return -EACCES;
|
||||||
+ * @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);
|
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
struct drv_dev_and_id {
|
rc = pci_drv->probe(pci_dev, ddi->id);
|
||||||
struct pci_driver *drv;
|
if (!rc)
|
||||||
struct pci_dev *dev;
|
return rc;
|
||||||
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
|
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
|
||||||
index 321156ca273d..fc399e56ec8f 100644
|
index 321156ca273d..fc399e56ec8f 100644
|
||||||
--- a/drivers/pci/quirks.c
|
--- 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)
|
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
|
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
|
--- a/include/linux/kernel.h
|
||||||
+++ b/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. */ \
|
/* OTHER_WRITABLE? Generally considered a bad idea. */ \
|
||||||
BUILD_BUG_ON_ZERO((perms) & 2) + \
|
BUILD_BUG_ON_ZERO((perms) & 2) + \
|
||||||
(perms))
|
(perms))
|
||||||
@ -1871,18 +1785,11 @@ index 0d91e0af0125..d83e42ef8dd5 100644
|
|||||||
+
|
+
|
||||||
+#ifdef CONFIG_RHEL_DIFFERENCES
|
+#ifdef CONFIG_RHEL_DIFFERENCES
|
||||||
+void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...);
|
+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_tech_preview(const char *msg, struct module *mod);
|
||||||
+void mark_partner_supported(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
|
+#else
|
||||||
+static inline void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...) { }
|
+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_tech_preview(const char *msg, struct module *mod) { }
|
||||||
+static inline void mark_partner_supported(const char *msg, struct module *mod) { }
|
+static inline void mark_partner_supported(const char *msg, struct module *mod) { }
|
||||||
+#endif
|
+#endif
|
||||||
@ -1902,7 +1809,7 @@ index 7308a1a7599b..a3aa26339b43 100644
|
|||||||
#ifdef CONFIG_PERF_EVENTS
|
#ifdef CONFIG_PERF_EVENTS
|
||||||
LSM_HOOK(int, 0, perf_event_open, struct perf_event_attr *attr, int type)
|
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
|
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
|
--- a/include/linux/module.h
|
||||||
+++ b/include/linux/module.h
|
+++ b/include/linux/module.h
|
||||||
@@ -418,6 +418,7 @@ struct module {
|
@@ -418,6 +418,7 @@ struct module {
|
||||||
@ -1913,6 +1820,15 @@ index a98e188cf37b..2eef4246c2c9 100644
|
|||||||
struct kobject *holders_dir;
|
struct kobject *holders_dir;
|
||||||
|
|
||||||
/* Exported symbols */
|
/* 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
|
diff --git a/include/linux/panic.h b/include/linux/panic.h
|
||||||
index 6717b15e798c..8e1d3eae1686 100644
|
index 6717b15e798c..8e1d3eae1686 100644
|
||||||
--- a/include/linux/panic.h
|
--- a/include/linux/panic.h
|
||||||
@ -1943,32 +1859,28 @@ index 6717b15e798c..8e1d3eae1686 100644
|
|||||||
|
|
||||||
struct taint_flag {
|
struct taint_flag {
|
||||||
diff --git a/include/linux/pci.h b/include/linux/pci.h
|
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
|
--- a/include/linux/pci.h
|
||||||
+++ b/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);
|
unsigned long driver_data);
|
||||||
const struct pci_device_id *pci_match_id(const struct pci_device_id *ids,
|
const struct pci_device_id *pci_match_id(const struct pci_device_id *ids,
|
||||||
struct pci_dev *dev);
|
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 pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
|
||||||
int pass);
|
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
|
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
|
||||||
@ -2525,6 +2437,20 @@ index 32828502f09e..b5c27505fa16 100644
|
|||||||
#endif /* CONFIG_SECURITY */
|
#endif /* CONFIG_SECURITY */
|
||||||
|
|
||||||
#if defined(CONFIG_SECURITY) && defined(CONFIG_WATCH_QUEUE)
|
#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
|
diff --git a/kernel/Makefile b/kernel/Makefile
|
||||||
index 3947122d618b..5b9462a450a1 100644
|
index 3947122d618b..5b9462a450a1 100644
|
||||||
--- a/kernel/Makefile
|
--- a/kernel/Makefile
|
||||||
@ -2586,7 +2512,7 @@ index a2aef900519c..b872a64be8fd 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/kernel/module/main.c b/kernel/module/main.c
|
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
|
--- a/kernel/module/main.c
|
||||||
+++ b/kernel/module/main.c
|
+++ b/kernel/module/main.c
|
||||||
@@ -528,6 +528,7 @@ static struct module_attribute modinfo_##field = { \
|
@@ -528,6 +528,7 @@ static struct module_attribute modinfo_##field = { \
|
||||||
@ -2605,6 +2531,18 @@ index 59b1d067e528..b49c20c89bed 100644
|
|||||||
&modinfo_initstate,
|
&modinfo_initstate,
|
||||||
&modinfo_coresize,
|
&modinfo_coresize,
|
||||||
#ifdef CONFIG_ARCH_WANTS_MODULES_DATA_IN_VMALLOC
|
#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
|
diff --git a/kernel/module/signing.c b/kernel/module/signing.c
|
||||||
index a2ff4242e623..f0d2be1ee4f1 100644
|
index a2ff4242e623..f0d2be1ee4f1 100644
|
||||||
--- a/kernel/module/signing.c
|
--- 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
|
diff --git a/kernel/rh_messages.c b/kernel/rh_messages.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 000000000000..018800f35ff2
|
index 000000000000..48a6bb6c9b38
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/kernel/rh_messages.c
|
+++ b/kernel/rh_messages.c
|
||||||
@@ -0,0 +1,209 @@
|
@@ -0,0 +1,414 @@
|
||||||
+#include <linux/kernel.h>
|
|
||||||
+#include <linux/module.h>
|
|
||||||
+
|
|
||||||
+#define DEV_DESC_LEN 256
|
|
||||||
+/*
|
+/*
|
||||||
+ * The following functions are used by Red Hat to indicate to users that
|
+ * 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
|
+ * 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.
|
+ * 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.
|
+ * mark_hardware_unmaintained() - Mark hardware as unmaintained.
|
||||||
+ * @driver_name: driver name
|
+ * @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
|
+ * 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.
|
+ * 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
|
+ * Red Hat may, at their own discretion, fix security-related and critical
|
||||||
+ * will be disabled in a future major release and users deploying this device
|
+ * issues. Support for this device will be disabled in a future major release
|
||||||
+ * should plan to replace the device in production systems.
|
+ * 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
|
+ * 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 hardware device. For example, a network device driver loading on a
|
||||||
+ * specific device that is no longer maintained by the manufacturer.
|
+ * 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, ...)
|
+void mark_hardware_unmaintained(const char *driver_name, char *fmt, ...)
|
||||||
+{
|
+{
|
||||||
@ -2702,33 +2644,13 @@ index 000000000000..018800f35ff2
|
|||||||
+
|
+
|
||||||
+ va_start(args, fmt);
|
+ va_start(args, fmt);
|
||||||
+ vsnprintf(device_description, DEV_DESC_LEN, fmt, args);
|
+ vsnprintf(device_description, DEV_DESC_LEN, fmt, args);
|
||||||
+ pr_crit("Warning: Unmaintained hardware is detected: %s:%s\n", driver_name,
|
+ pr_crit(RH_UNMAINT_HW,
|
||||||
+ device_description);
|
+ driver_name, device_description);
|
||||||
+ va_end(args);
|
+ va_end(args);
|
||||||
+}
|
+}
|
||||||
+EXPORT_SYMBOL(mark_hardware_unmaintained);
|
+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.
|
+ * mark_hardware_deprecated() - Mark hardware as deprecated.
|
||||||
+ * @driver_name: driver name
|
+ * @driver_name: driver name
|
||||||
+ * @fmt: format for device description
|
+ * @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
|
+ * 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 hardware device. For example, a network device driver loading on a
|
||||||
+ * specific device that is no longer maintained by the manufacturer.
|
+ * 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, ...)
|
+void mark_hardware_deprecated(const char *driver_name, char *fmt, ...)
|
||||||
+{
|
+{
|
||||||
@ -2750,32 +2674,10 @@ index 000000000000..018800f35ff2
|
|||||||
+
|
+
|
||||||
+ va_start(args, fmt);
|
+ va_start(args, fmt);
|
||||||
+ vsnprintf(device_description, DEV_DESC_LEN, fmt, args);
|
+ 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);
|
+ driver_name, device_description);
|
||||||
+ va_end(args);
|
+ 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.
|
+ * 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
|
+ * 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 hardware device. For example, a network device driver loading on a
|
||||||
+ * specific device that is no longer maintained by the manufacturer.
|
+ * 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];
|
+ char device_description[DEV_DESC_LEN];
|
||||||
+ va_list args;
|
+ va_list args;
|
||||||
+
|
+
|
||||||
+ va_start(args, fmt);
|
+ va_start(args, fmt);
|
||||||
+ vsnprintf(device_description, DEV_DESC_LEN, fmt, args);
|
+ 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);
|
+ driver_name, device_description);
|
||||||
+ va_end(args);
|
+ 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'
|
+ * 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
|
+ * minor release. The next RHEL minor release may contain full support for
|
||||||
+ * this driver. Red Hat does not guarantee that bugs reported against this
|
+ * this driver. Red Hat does not guarantee that bugs reported against this
|
||||||
+ * driver or subsystem will be resolved.
|
+ * driver or subsystem will be resolved.
|
||||||
|
+ *
|
||||||
|
+ * Reserved for Internal Red Hat use only.
|
||||||
+ */
|
+ */
|
||||||
+void mark_tech_preview(const char *msg, struct module *mod)
|
+void mark_tech_preview(const char *msg, struct module *mod)
|
||||||
+{
|
+{
|
||||||
@ -2827,9 +2911,7 @@ index 000000000000..018800f35ff2
|
|||||||
+ str = mod->name;
|
+ str = mod->name;
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+ pr_warn("TECH PREVIEW: %s may not be fully supported.\n"
|
+ pr_warn(RH_TECH_PREVIEW, (str ? str : "kernel"));
|
||||||
+ "Please review provided documentation for limitations.\n",
|
|
||||||
+ (str ? str : "kernel"));
|
|
||||||
+ add_taint(TAINT_AUX, LOCKDEP_STILL_OK);
|
+ add_taint(TAINT_AUX, LOCKDEP_STILL_OK);
|
||||||
+#ifdef CONFIG_MODULES
|
+#ifdef CONFIG_MODULES
|
||||||
+ if (mod)
|
+ if (mod)
|
||||||
@ -2842,31 +2924,207 @@ index 000000000000..018800f35ff2
|
|||||||
+ * mark_partner_supported() - Mark driver or kernel subsystem as 'Partner Supported'
|
+ * mark_partner_supported() - Mark driver or kernel subsystem as 'Partner Supported'
|
||||||
+ * @msg: Driver or kernel subsystem name
|
+ * @msg: Driver or kernel subsystem name
|
||||||
+ *
|
+ *
|
||||||
+ * Called to clarify the support status of a driver. This does TAINT the
|
+ * 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
|
+ * kernel. Calling this function indicates that the driver or subsystem
|
||||||
+ * supported by one of our partners and not by Red Hat directly.
|
+ * 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)
|
+void mark_partner_supported(const char *msg, struct module *mod)
|
||||||
+{
|
+{
|
||||||
+ const char *str = NULL;
|
+ const char *str = NULL;
|
||||||
+
|
+
|
||||||
+ if (msg)
|
+ if (msg)
|
||||||
+ str = msg;
|
+ str = msg;
|
||||||
+#ifdef CONFIG_MODULES
|
+#ifdef CONFIG_MODULES
|
||||||
+ else if (mod)
|
+ else if (mod)
|
||||||
+ str = mod->name;
|
+ str = mod->name;
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+ pr_warn("Notice: %s is a Partner Supported GPL module and not supported directly by Red Hat.\n"
|
+ pr_warn(RH_PARTNER_SUPPORTED, (str ? str : "kernel"));
|
||||||
+ "Please contact your provider for support.\n",
|
+ add_taint(TAINT_PARTNER_SUPPORTED, LOCKDEP_STILL_OK);
|
||||||
+ (str ? str : "kernel"));
|
|
||||||
+ add_taint(TAINT_PARTNER_SUPPORTED, LOCKDEP_STILL_OK);
|
|
||||||
+#ifdef CONFIG_MODULES
|
+#ifdef CONFIG_MODULES
|
||||||
+ if (mod)
|
+ if (mod)
|
||||||
+ mod->taints |= (1U << TAINT_PARTNER_SUPPORTED);
|
+ mod->taints |= (1U << TAINT_PARTNER_SUPPORTED);
|
||||||
+#endif
|
+#endif
|
||||||
+}
|
+}
|
||||||
+EXPORT_SYMBOL(mark_partner_supported);
|
+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
|
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
|
||||||
index b29b29707f10..e176487ebf1f 100644
|
index b29b29707f10..e176487ebf1f 100644
|
||||||
--- a/scripts/mod/modpost.c
|
--- a/scripts/mod/modpost.c
|
||||||
|
6
sources
6
sources
@ -1,3 +1,3 @@
|
|||||||
SHA512 (linux-6.5-rc6.tar.xz) = e5ac3513eb366e10cbf27c1b7994fa830626aa20c5fd6ec261b6aee7267c22000ecc31b0ec94d154c864bc361eca5539cad08006f96d6312fd3038dd9727323a
|
SHA512 (linux-6.5-rc6-27-g91aa6c412d7f.tar.xz) = 0b12eafe62eac159bad74bebcf3e9201bf6a6a3376a69bf508a293c622ac9f5cb1a9bc32430a7fb551d4f9a2bb0b96f0ae0923856b1f919b1021c22b5a95d212
|
||||||
SHA512 (kernel-abi-stablelists-6.5.0.tar.bz2) = 6107f982f8ee7bb003c3338f39f7be48ea12e7d14fcc99fc193b4ca7e100409de12320451fab7b806b24d661a1937dd53e6a36093563bd3b8405b0834d627add
|
SHA512 (kernel-abi-stablelists-6.5.0.tar.bz2) = 4237bd59883c06ceb29d3f119260ceff32a22402da3e0e90b181584bbee56af585cd8a1ae9f27937dbb51afd895b507cbe2bf4887812fe64fb1823b5b3ea6d4f
|
||||||
SHA512 (kernel-kabi-dw-6.5.0.tar.bz2) = 2705fa93054d143dce4ee74cfe2e3906c19b97ec7118ad1a95dd18c999929dd66aab267dbdfcf5be71988de0eb5073ce52169d62dd30e491475fab6bddc48a5a
|
SHA512 (kernel-kabi-dw-6.5.0.tar.bz2) = 3c9b4444bf1fe89cb4a08cfc05999e2b6c4233c254caad3f737e93b7dcfb0b5e6634a284ac368f5c0155564865d36f06d55575c419c03745fbe221ab6a942b3b
|
||||||
|
Loading…
Reference in New Issue
Block a user