Bug 2040491

Summary: lvmdevices segfault attempting to re-add devices file entry after an altered PART value
Product: Red Hat Enterprise Linux 8 Reporter: Corey Marthaler <cmarthal>
Component: lvm2Assignee: David Teigland <teigland>
lvm2 sub component: Devices, Filtering and Stacking QA Contact: cluster-qe <cluster-qe>
Status: CLOSED ERRATA Docs Contact:
Severity: medium    
Priority: high CC: agk, cmackows, heinzm, jbrassow, mcsontos, msnitzer, prajnoha, teigland, zkabelac
Version: 8.6Keywords: Triaged
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: lvm2-2.03.14-4.el8 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 2040937 (view as bug list) Environment:
Last Closed: 2022-11-08 10:55:24 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:
Bug Depends On:    
Bug Blocks: 2040937    

Description Corey Marthaler 2022-01-13 20:15:26 UTC
Description of problem:
SCENARIO - altered_devicesfile_partition_check_and_repair:  Test the discovery and repair of an altered partition value in devicesfile entry (bug 2039977|2040482)
Copying out blanked system.devices file to begin with
/tmp/system990.devices -> hayes-01:/etc/lvm/devices/system.devices
lvmdevices --adddev /dev/sdd1
Altered entry:
IDTYPE=sys_wwid IDNAME=naa.6d094660575ece002291ba5c230d16c6 DEVNAME=/dev/sdd1 PVID=. PART=9
Copying out altered system.devices file to hayes-01
/tmp/system1715.devices -> hayes-01:/etc/lvm/devices/system.devices
lvmdevices --check
  Devices file sys_wwid naa.6d094660575ece002291ba5c230d16c6 PVID none last seen on /dev/sdd1 not found.



[root@hayes-01 ~]# cat /etc/lvm/devices/system.devices
# edited by QA Thu Jan 13 14:08:37 2022# LVM uses devices listed in this file.
# Created by LVM command lvmdevices pid 92867 at Thu Jan 13 14:08:36 2022
VERSION=1.1.1452
IDTYPE=sys_wwid IDNAME=naa.6d094660575ece002291ba5c230d16c6 DEVNAME=/dev/sdd1 PVID=. PART=9

[root@hayes-01 ~]# lvmdevices --check
  Devices file sys_wwid naa.6d094660575ece002291ba5c230d16c6 PVID none last seen on /dev/sdd1 not found.

[root@hayes-01 ~]# lvmdevices --update
  Devices file sys_wwid naa.6d094660575ece002291ba5c230d16c6 PVID none last seen on /dev/sdd1 not found.
  No update for devices file is needed.

[root@hayes-01 ~]# lvmdevices --adddev /dev/sdd1
  Devices file sys_wwid naa.6d094660575ece002291ba5c230d16c6 PVID none last seen on /dev/sdd1 not found.
Segmentation fault (core dumped)


Version-Release number of selected component (if applicable):
kernel-4.18.0-357.el8    BUILT: Wed Dec 22 15:55:27 CST 2021
lvm2-2.03.14-3.el8    BUILT: Tue Jan  4 14:54:16 CST 2022
lvm2-libs-2.03.14-3.el8    BUILT: Tue Jan  4 14:54:16 CST 2022

Comment 1 Corey Marthaler 2022-01-13 20:22:50 UTC
Core was generated by `lvmdevices --adddev /dev/sdd1'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00005653c3e7b0fe in read_sys_block (cmd=cmd@entry=0x5653c61709f0, dev=0x0, suffix=suffix@entry=0x5653c3fa50b4 "device/wwid", sysbuf=sysbuf@entry=0x7ffec9aff780 "", 
    sysbufsize=sysbufsize@entry=4096) at device/device_id.c:186
186     {
(gdb) bt
#0  0x00005653c3e7b0fe in read_sys_block (cmd=cmd@entry=0x5653c61709f0, dev=0x0, suffix=suffix@entry=0x5653c3fa50b4 "device/wwid", sysbuf=sysbuf@entry=0x7ffec9aff780 "", 
    sysbufsize=sysbufsize@entry=4096) at device/device_id.c:186
#1  0x00005653c3e7b968 in device_id_system_read (cmd=cmd@entry=0x5653c61709f0, dev=0x0, idtype=<optimized out>) at device/device_id.c:310
#2  0x00005653c3e7d2fb in device_id_add (cmd=cmd@entry=0x5653c61709f0, dev=dev@entry=0x5653c6197638, pvid_arg=pvid_arg@entry=0x5653c61976d0 "", idtype_arg=<optimized out>, 
    id_arg=id_arg@entry=0x0) at device/device_id.c:1200
#3  0x00005653c3e2a91f in lvmdevices (cmd=0x5653c61709f0, argc=<optimized out>, argv=<optimized out>) at lvmdevices.c:325
#4  0x00005653c3e28e69 in lvm_run_command (cmd=cmd@entry=0x5653c61709f0, argc=<optimized out>, argc@entry=3, argv=<optimized out>, argv@entry=0x7ffec9b00cc8) at lvmcmdline.c:3295
#5  0x00005653c3e29e64 in lvm2_main (argc=3, argv=0x7ffec9b00cc8) at lvmcmdline.c:3824
#6  0x00007fd9bb611ca3 in __libc_start_main (main=0x5653c3e03150 <main>, argc=3, argv=0x7ffec9b00cc8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, 
    stack_end=0x7ffec9b00cb8) at ../csu/libc-start.c:314
#7  0x00005653c3e0321e in _start () at lvm.c:23

Comment 2 David Teigland 2022-01-25 21:27:49 UTC
This problem was a part of a bunch of incorrect/unnecessary checks done when adding a device so that code has been reduced and reworked.  Some previous warnings will appear a bit different.

https://sourceware.org/git/?p=lvm2.git;a=commit;h=8f50c5e79b6ce619a53d51353dded2f84953af00


(manually edit system.devices entry, changing PART=1 to PART=9)

# cat /etc/lvm/devices/system.devices 
# LVM uses devices listed in this file.
# Created by LVM command lvmdevices pid 577118 at Tue Jan 25 15:22:53 2022
VERSION=1.1.104
IDTYPE=sys_wwid IDNAME=naa.690b11c0000438ad0000056e5091041c DEVNAME=/dev/sde PVID=iPtLn7Fd0ajt9D7UHBF5IQ3L8xH3R08b
IDTYPE=sys_wwid IDNAME=naa.690b11c0000438ad0000056b50910415 DEVNAME=/dev/sdd1 PVID=. PART=9

# lvmdevices --check
  Devices file sys_wwid naa.690b11c0000438ad0000056b50910415 PVID none last seen on /dev/sdd1 not found.
# lvmdevices --update
  Devices file sys_wwid naa.690b11c0000438ad0000056b50910415 PVID none last seen on /dev/sdd1 not found.
  No update for devices file is needed.
# lvmdevices --adddev /dev/sdd1
  Devices file sys_wwid naa.690b11c0000438ad0000056b50910415 PVID none last seen on /dev/sdd1 not found.
  WARNING: adding device /dev/sdd1 with idname naa.690b11c0000438ad0000056b50910415 which is already used for missing device.

# cat /etc/lvm/devices/system.devices 
# LVM uses devices listed in this file.
# Created by LVM command lvmdevices pid 577132 at Tue Jan 25 15:24:08 2022
VERSION=1.1.105
IDTYPE=sys_wwid IDNAME=naa.690b11c0000438ad0000056e5091041c DEVNAME=/dev/sde PVID=iPtLn7Fd0ajt9D7UHBF5IQ3L8xH3R08b
IDTYPE=sys_wwid IDNAME=naa.690b11c0000438ad0000056b50910415 DEVNAME=/dev/sdd1 PVID=. PART=9
IDTYPE=sys_wwid IDNAME=naa.690b11c0000438ad0000056b50910415 DEVNAME=/dev/sdd1 PVID=. PART=1

Comment 3 Corey Marthaler 2022-02-22 02:48:31 UTC
Looks like this also affects pvcreate. I'll make sure to add that to the regression tests as well.

kernel-4.18.0-367.el8    BUILT: Thu Feb 10 14:33:16 CST 2022
lvm2-2.03.14-3.el8    BUILT: Tue Jan  4 14:54:16 CST 2022
lvm2-libs-2.03.14-3.el8    BUILT: Tue Jan  4 14:54:16 CST 2022

[root@hayes-01 ~]# pvcreate /dev/sdg1
Segmentation fault (core dumped)
[root@hayes-01 ~]# 
Core was generated by `pvcreate /dev/sdg1'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000556b2ae780fe in read_sys_block (cmd=cmd@entry=0x556b2b787a40, dev=0x0, suffix=suffix@entry=0x556b2afa20b4 "device/wwid", sysbuf=sysbuf@entry=0x7ffea72d5e40 "", sysbufsize=sysbufsize@entry=4096)
    at device/device_id.c:186
186     {
(gdb) bt
#0  0x0000556b2ae780fe in read_sys_block (cmd=cmd@entry=0x556b2b787a40, dev=0x0, suffix=suffix@entry=0x556b2afa20b4 "device/wwid", sysbuf=sysbuf@entry=0x7ffea72d5e40 "", sysbufsize=sysbufsize@entry=4096)
    at device/device_id.c:186
#1  0x0000556b2ae78968 in device_id_system_read (cmd=cmd@entry=0x556b2b787a40, dev=0x0, idtype=<optimized out>) at device/device_id.c:310
#2  0x0000556b2ae7a2fb in device_id_add (cmd=cmd@entry=0x556b2b787a40, dev=0x556b2b7aecb0, pvid_arg=pvid_arg@entry=0x7ffea72d7000 "vUzVdOdIMwqPkqvmW80Wdv1VEmmk2K1Q", idtype_arg=idtype_arg@entry=0x0, 
    id_arg=id_arg@entry=0x0) at device/device_id.c:1200
#3  0x0000556b2ae4d8f8 in pvcreate_each_device (cmd=cmd@entry=0x556b2b787a40, handle=handle@entry=0x556b2b8c6c50, pp=pp@entry=0x7ffea72d7080) at toollib.c:5624
#4  0x0000556b2ae3401a in pvcreate (cmd=0x556b2b787a40, argc=1, argv=0x7ffea72d7510) at pvcreate.c:154
#5  0x0000556b2ae25e69 in lvm_run_command (cmd=cmd@entry=0x556b2b787a40, argc=<optimized out>, argc@entry=2, argv=<optimized out>, argv@entry=0x7ffea72d7508) at lvmcmdline.c:3295
#6  0x0000556b2ae26e64 in lvm2_main (argc=2, argv=0x7ffea72d7508) at lvmcmdline.c:3824
#7  0x00007f21c4e13ca3 in __libc_start_main (main=0x556b2ae00150 <main>, argc=2, argv=0x7ffea72d7508, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffea72d74f8)
    at ../csu/libc-start.c:314
#8  0x0000556b2ae0021e in _start () at lvm.c:23

Comment 10 Corey Marthaler 2022-07-27 18:04:57 UTC
Verified with the latest kernel/lvm2 as well.

kernel-4.18.0-411.el8    BUILT: Wed Jul 20 18:42:42 CDT 2022
lvm2-2.03.14-5.el8    BUILT: Thu Jul 14 09:23:13 CDT 2022
lvm2-libs-2.03.14-5.el8    BUILT: Thu Jul 14 09:23:13 CDT 2022


SCENARIO - altered_partition_pvcreation:  Test the attempt to create a PV after an existing entry has an altered partition value (segfault bugs 2040491|2040937) 
Copying out blanked system.devices file to begin with
/tmp/system1561.devices -> hayes-01:/etc/lvm/devices/system.devices
adding entry to the devices file for /dev/sde1
Altered entry:
IDTYPE=sys_wwid IDNAME=naa.6d094660575ece002291bade2acdbd28 DEVNAME=/dev/sde1 PVID=. PART=9 
Copying out altered system.devices file to hayes-01
/tmp/system946.devices -> hayes-01:/etc/lvm/devices/system.devices

pvcreate --yes -ff /dev/sde1
  WARNING: adding device /dev/sde1 with idname naa.6d094660575ece002291bade2acdbd28 which is already used for missing device.
  Physical volume "/dev/sde1" successfully created.
Checking for segfault notification (bug 2040491|2040937)
pvremove /dev/sde1
  Labels on physical volume "/dev/sde1" successfully wiped.
removing entry from the devices file for /dev/sde1
Altered entry:
IDTYPE=sys_wwid IDNAME=naa.6d094660575ece002291bade2acdbd28 DEVNAME=/dev/sde1 PVID=. PART=1 
Copying out altered system.devices file to hayes-01
/tmp/system1065.devices -> hayes-01:/etc/lvm/devices/system.devices
removing entry from the devices file for /dev/sde1


SCENARIO - altered_partition_devicesfile_addition:  Test the attempt to add a new devicesfile entry after an existing entry has an altered partition value (segfault bugs 2040491|2040937) 
Copying out blanked system.devices file to begin with
/tmp/system1393.devices -> hayes-01:/etc/lvm/devices/system.devices
adding entry to the devices file for /dev/sde1
Altered entry:
IDTYPE=sys_wwid IDNAME=naa.6d094660575ece002291bade2acdbd28 DEVNAME=/dev/sde1 PVID=. PART=9 
Copying out altered system.devices file to hayes-01
/tmp/system1591.devices -> hayes-01:/etc/lvm/devices/system.devices

lvmdevices --adddev /dev/sde1
  Devices file sys_wwid naa.6d094660575ece002291bade2acdbd28 PVID none last seen on /dev/sde1 not found.
  WARNING: adding device /dev/sde1 with idname naa.6d094660575ece002291bade2acdbd28 which is already used for missing device.
Checking for segfault notification (bug 2040491|2040937)
removing entry from the devices file for /dev/sde1
Altered entry:
IDTYPE=sys_wwid IDNAME=naa.6d094660575ece002291bade2acdbd28 DEVNAME=/dev/sde1 PVID=. PART=1 
Copying out altered system.devices file to hayes-01
/tmp/system1499.devices -> hayes-01:/etc/lvm/devices/system.devices
removing entry from the devices file for /dev/sde1

Comment 12 errata-xmlrpc 2022-11-08 10:55:24 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 (lvm2 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-2022:7792