From 0e6968e3846974755fde3592d9260b3d109dc1f5 Mon Sep 17 00:00:00 2001 From: Lixiaokeng Date: Fri, 16 Dec 2022 14:37:27 +0800 Subject: [PATCH] Fix NULL pointer dereference in validate_geometry_ddf() (cherry picked from commit e848a7231a422777e71b3b989f3d48fadc4f78fb) --- ...nter-dereference-in-validate_geometr.patch | 48 +++++++++++++++++++ mdadm.spec | 6 ++- 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 0007-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch diff --git a/0007-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch b/0007-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch new file mode 100644 index 0000000..28d7306 --- /dev/null +++ b/0007-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch @@ -0,0 +1,48 @@ +From b016fbfdda1fc1c9ddc1e590d53da3fa86212f9c Mon Sep 17 00:00:00 2001 +From: Logan Gunthorpe +Date: Wed, 22 Jun 2022 14:25:08 -0600 +Subject: [PATCH] DDF: Fix NULL pointer dereference in validate_geometry_ddf() + +A relatively recent patch added a call to validate_geometry() in +Manage_add() that has level=LEVEL_CONTAINER and chunk=NULL. + +This causes some ddf tests to segfault which aborts the test suite. + +To fix this, avoid dereferencing chunk when the level is +LEVEL_CONTAINER or LEVEL_NONE. + +Fixes: 1f5d54a06df0 ("Manage: Call validate_geometry when adding drive to external container") +Signed-off-by: Logan Gunthorpe +Acked-by: Mariusz Tkaczyk +Signed-off-by: Jes Sorensen +--- + super-ddf.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/super-ddf.c b/super-ddf.c +index a592c5d..d4dd334 100644 +--- a/super-ddf.c ++++ b/super-ddf.c +@@ -3340,9 +3340,6 @@ static int validate_geometry_ddf(struct supertype *st, + * If given BVDs, we make an SVD, changing all the GUIDs in the process. + */ + +- if (*chunk == UnSet) +- *chunk = DEFAULT_CHUNK; +- + if (level == LEVEL_NONE) + level = LEVEL_CONTAINER; + if (level == LEVEL_CONTAINER) { +@@ -3354,6 +3351,9 @@ static int validate_geometry_ddf(struct supertype *st, + verbose); + } + ++ if (*chunk == UnSet) ++ *chunk = DEFAULT_CHUNK; ++ + if (!dev) { + mdu_array_info_t array = { + .level = level, +-- +2.14.3 (Apple Git-98) + diff --git a/mdadm.spec b/mdadm.spec index d30526b..04404bb 100644 --- a/mdadm.spec +++ b/mdadm.spec @@ -1,6 +1,6 @@ Name: mdadm Version: 4.2 -Release: 4 +Release: 5 Summary: The software RAID arrays user manage tools License: GPLv2+ URL: http://www.kernel.org/pub/linux/utils/raid/mdadm/ @@ -16,6 +16,7 @@ Patch3: 0003-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch Patch4: 0004-mdadm-mdcheck_start.service-mdcheck_continue.service.patch Patch5: 0005-Fix-possible-NULL-ptr-dereferences-and-memory-leaks.patch Patch6: 0006-mdadm-Don-t-open-md-device-for-CREATE-and-ASSEMBLE.patch +Patch7: 0007-DDF-Fix-NULL-pointer-dereference-in-validate_geometr.patch BuildRequires: systemd gcc binutils libudev-devel Requires(post): systemd coreutils @@ -81,6 +82,9 @@ install -d -m 710 %{buildroot}/var/run/mdadm/ %{_mandir}/man*/* %changelog +* Fri Dec 16 2022 Lixiaokeng - 4.2-5 +* fix NULL dereference + * Thu Dec 8 2022 Zhiqiang Liu - 4.2-4 - backport two bugfix patches -- Gitee