From 508f664dffbae3712a15fc72ddb29a44afb53b7a Mon Sep 17 00:00:00 2001 From: Zhiqiang Liu Date: Mon, 14 Nov 2022 15:50:40 +0800 Subject: [PATCH] mdadm: fix one segfaultproblem of check_for_cleared_bb in monitor.c fix issue:https://gitee.com/src-openeuler/mdadm/issues/I611EL Signed-off-by: Zhiqiang Liu --- ...gfault-when-calling-NULL-get_bad_blo.patch | 35 +++++++++++++++++++ mdadm.spec | 6 +++- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 0030-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch diff --git a/0030-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch b/0030-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch new file mode 100644 index 0000000..dd381e2 --- /dev/null +++ b/0030-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch @@ -0,0 +1,35 @@ +From 9ae62977b51dab0f4bb46b1c8ea5ebd1705b2f4d Mon Sep 17 00:00:00 2001 +From: Logan Gunthorpe +Date: Wed, 22 Jun 2022 14:25:10 -0600 +Subject: [PATCH] monitor: Avoid segfault when calling NULL get_bad_blocks + +Not all struct superswitch implement a get_bad_blocks() function, +yet mdmon seems to call it without checking for NULL and thus +occasionally segfaults in the test 10ddf-geometry. + +Fix this by checking for NULL before calling it. + +Signed-off-by: Logan Gunthorpe +Acked-by: Mariusz Tkaczyk +Signed-off-by: Jes Sorensen +--- + monitor.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/monitor.c b/monitor.c +index b877e595..820a93d0 100644 +--- a/monitor.c ++++ b/monitor.c +@@ -311,6 +311,9 @@ static int check_for_cleared_bb(struct active_array *a, struct mdinfo *mdi) + struct md_bb *bb; + int i; + ++ if (!ss->get_bad_blocks) ++ return -1; ++ + /* + * Get a list of bad blocks for an array, then read list of + * acknowledged bad blocks from kernel and compare it against metadata +-- +2.33.0 + diff --git a/mdadm.spec b/mdadm.spec index 69176ce..e3d1fbc 100644 --- a/mdadm.spec +++ b/mdadm.spec @@ -1,6 +1,6 @@ Name: mdadm Version: 4.1 -Release: 6 +Release: 7 Summary: The software RAID arrays user manage tools License: GPLv2+ URL: http://www.kernel.org/pub/linux/utils/raid/mdadm/ @@ -39,6 +39,7 @@ Patch26: 0026-mdadm-Grow-prevent-md-s-fd-from-being-occupied-durin.patch Patch27: 0027-mdadm-remove-Werror-to-fix-Werror-address-of-packed-.patch Patch28: 0028-mdadm-fix-coredump-of-mdadm-monitor-r.patch Patch29: 0029-mdadm-Fix-mdadm-r-remove-option-regresision.patch +Patch30: 0030-monitor-Avoid-segfault-when-calling-NULL-get_bad_blo.patch BuildRequires: systemd gcc binutils Requires(post): systemd coreutils @@ -104,6 +105,9 @@ install -d -m 710 %{buildroot}/var/run/mdadm/ %{_mandir}/man*/* %changelog +* Mon Nov 14 2022 Zhiqiang Liu - 4.1-7 +- fix one segfault problem of check_for_cleared_bb in monitor.c + * Sat Jun 25 2022 wuguanghao - 4.1-6 - fix segfault of --monitor -r -- Gitee