parent
1109187052
commit
1a17d170dc
@ -0,0 +1,48 @@
|
||||
From 7f960c3bd050e76f8bf0a8a0c8fbdcbaa565fc78 Mon Sep 17 00:00:00 2001
|
||||
From: Blazej Kucman <blazej.kucman@intel.com>
|
||||
Date: Fri, 22 Nov 2024 11:01:04 +0100
|
||||
Subject: [PATCH 1/1] platform-intel: fix buffer overflow
|
||||
|
||||
mdadm -C /dev/md/imsm0 -e imsm -n 2 /dev/nvme5n1 /dev/nvme4n1 -R
|
||||
mdadm -C /dev/md/r0d2 -l 0 -n 2 /dev/nvme5n1 /dev/nvme4n1 -R
|
||||
*** buffer overflow detected ***: terminated
|
||||
Aborted (core dumped)
|
||||
|
||||
Issue is related to D_FORTIFY_SOURCE=3 flag and depends on environment,
|
||||
especially compiler version. In function active_arrays_by_format length of
|
||||
path buffer is calculated dynamically based on parameters, while PATH_MAX
|
||||
is used in snprintf, this is my lead to buffer overflow.
|
||||
|
||||
It is fixed by change dynamic length calculation, to use define PATH_MAX
|
||||
for path length.
|
||||
|
||||
Signed-off-by: Blazej Kucman <blazej.kucman@intel.com>
|
||||
---
|
||||
super-intel.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/super-intel.c b/super-intel.c
|
||||
index 87026f5a0e80..9c464945d09c 100644
|
||||
--- a/super-intel.c
|
||||
+++ b/super-intel.c
|
||||
@@ -7055,7 +7055,8 @@ active_arrays_by_format(char *name, char* hba, struct md_list **devlist,
|
||||
int fd = -1;
|
||||
|
||||
while (dev && !is_fd_valid(fd)) {
|
||||
- char *path = xmalloc(strlen(dev->name) + strlen("/dev/") + 1);
|
||||
+ char path[PATH_MAX];
|
||||
+
|
||||
num = snprintf(path, PATH_MAX, "%s%s", "/dev/", dev->name);
|
||||
if (num > 0)
|
||||
fd = open(path, O_RDONLY, 0);
|
||||
@@ -7063,7 +7064,6 @@ active_arrays_by_format(char *name, char* hba, struct md_list **devlist,
|
||||
pr_vrb("Cannot open %s: %s\n",
|
||||
dev->name, strerror(errno));
|
||||
}
|
||||
- free(path);
|
||||
dev = dev->next;
|
||||
}
|
||||
found = 0;
|
||||
--
|
||||
2.32.0 (Apple Git-132)
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 8032700b7a44df2dd54af478940938958c08dcf0 Mon Sep 17 00:00:00 2001
|
||||
From: Blazej Kucman <blazej.kucman@intel.com>
|
||||
Date: Wed, 20 Nov 2024 16:50:25 +0100
|
||||
Subject: [PATCH 1/1] imsm: fix tpv drvies check in add_to_super
|
||||
|
||||
Before the mentioned patch, the check to verify if IMSM on current
|
||||
platform supports a use of TPV (other than Intel) disk, was only performed
|
||||
for non-Intel disks, after it is performed for all. This change causes
|
||||
inability to use any disk when platform does not support TPV drives,
|
||||
attempt results in the following error.
|
||||
|
||||
mdadm: Platform configuration does not support non-Intel NVMe drives.
|
||||
Please refer to Intel(R) RSTe/VROC user guide.
|
||||
|
||||
This change restores the check if the disk is non-Intel.
|
||||
|
||||
Fixes: 734e7db4dfc5 ("imsm: Remove warning and refactor add_to_super_imsm code")
|
||||
Signed-off-by: Blazej Kucman <blazej.kucman@intel.com>
|
||||
---
|
||||
super-intel.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/super-intel.c b/super-intel.c
|
||||
index 9c464945d09c..7e3c5f2b7047 100644
|
||||
--- a/super-intel.c
|
||||
+++ b/super-intel.c
|
||||
@@ -6121,7 +6121,8 @@ static int add_to_super_imsm(struct supertype *st, mdu_disk_info_t *dk,
|
||||
pr_err("%s controller supports Multi-Path I/O, Intel (R) VROC does not support multipathing\n",
|
||||
basename(cntrl_path));
|
||||
|
||||
- if (super->orom && !imsm_orom_has_tpv_support(super->orom)) {
|
||||
+ if (super->orom && devpath_to_vendor(pci_dev_path) != 0x8086 &&
|
||||
+ !imsm_orom_has_tpv_support(super->orom)) {
|
||||
pr_err("\tPlatform configuration does not support non-Intel NVMe drives.\n"
|
||||
"\tPlease refer to Intel(R) RSTe/VROC user guide.\n");
|
||||
goto error;
|
||||
--
|
||||
2.32.0 (Apple Git-132)
|
||||
|
Loading…
Reference in new issue