Bug 1988462

Summary: RHEL7.9 device-mapper-multipath missing a patch for preventing panics when disable_changed_wwids is set
Product: Red Hat Enterprise Linux 7 Reporter: loberman <loberman>
Component: device-mapper-multipathAssignee: Ben Marzinski <bmarzins>
Status: CLOSED ERRATA QA Contact: Lin Li <lilin>
Severity: urgent Docs Contact:
Priority: high    
Version: 7.9CC: agk, bmarzins, heinzm, jbrassow, jreznik, lilin, mgandhi, msnitzer, prajnoha, rgirase
Target Milestone: rcKeywords: Triaged, ZStream
Target Release: ---Flags: pm-rhel: mirror+
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: device-mapper-multipath-0.4.9-135.el7_9 Doc Type: Bug Fix
Doc Text:
Cause: If multipathd detects a path's wwid has changed, multipathd wasn't checking if the path belonged to a multipath device before dereferencing the multipath device's alias Consequence: multipathd could crash if disable_changed_wwids is set, and a path not belonging to a multipath device has a wwid change Fix: multipathd now checks if a path with a changed wwid belongs to a multipath device, before trying to dereference that device pointer Result: multipathd no longer crashes when disable_changed_wwids is set, and a path not belonging to a multipath device has its wwid change.
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-08-31 09:11:21 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description loberman 2021-07-30 15:25:49 UTC
Description of problem:
Customer is running 7.9 and had to enable disable_changed wwids. After enabling this multipathd started coredumping.

Version-Release number of selected component (if applicable):
device-mapper-multipath-0.4.9-134.el7_9.x86_64

How reproducible:
Easy to reproduce at customer

Steps to Reproduce:
1.Enable disable_changed_wwids
2.multipathd segfaults
3.

Actual results:
multipathd segfaults

Expected results:
Known fix needed to prevent this

Additional info:

Analyzing the core file and why multipathd is segfaulting


Program terminated with signal 11, Segmentation fault.

#0  uev_update_path (vecs=0x55ce6e3d7c80, uev=0x7ff2bc000b50) at main.c:859
859					dm_fail_path(pp->mpp->alias, pp->dev_t);


(gdb) list
854				condlog(0, "%s: path wwid changed from '%s' to '%s'. disallowing", uev->kernel, wwid, pp->wwid);
855				strcpy(pp->wwid, wwid);
856				if (!pp->wwid_changed) {
857					pp->wwid_changed = 1;
858					pp->tick = 1;
859					dm_fail_path(pp->mpp->alias, pp->dev_t);
860				}
861			}
862			else {
863				pp->wwid_changed = 0;

(gdb) p pp
$1 = (struct path *) 0x55ce6e402900
(gdb) p pp->mpp->alias
Cannot access memory at address 0x1c0
(gdb) p pp->mpp->alias
Cannot access memory at address 0x1c0
(gdb) p pp->mpp
$2 = (struct multipath *) 0x0


Seems to be a known bug with disable_changed_wwids

https://listman.redhat.com/archives/dm-devel/2017-March/msg00189.html

Its not patched

I will log a BZ to get it patched, but its due to the disable_changed _wwids being enabled

Best Regards
Red Hat

Comment 7 Ben Marzinski 2021-08-03 21:32:54 UTC
Patch backported.

Comment 15 errata-xmlrpc 2021-08-31 09:11:21 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (device-mapper-multipath bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2021:3333