|
|
79b470 |
From 32957eca8129f926d205310ee7efbc1168e8ebdc Mon Sep 17 00:00:00 2001
|
|
|
79b470 |
Message-Id: <32957eca8129f926d205310ee7efbc1168e8ebdc@dist-git>
|
|
|
79b470 |
From: Marc Hartmayer <mhartmay@linux.ibm.com>
|
|
|
79b470 |
Date: Thu, 8 Oct 2020 11:07:00 -0400
|
|
|
79b470 |
Subject: [PATCH] udevProcessCSS: Check if def->driver is non-NULL
|
|
|
79b470 |
|
|
|
79b470 |
Don't process subchannel devices where `def->driver` is not set. This
|
|
|
79b470 |
fixes the following segfault:
|
|
|
79b470 |
|
|
|
79b470 |
Thread 21 "nodedev-init" received signal SIGSEGV, Segmentation fault.
|
|
|
79b470 |
[Switching to Thread 0x3ffb08fc910 (LWP 64303)]
|
|
|
79b470 |
(gdb) bt
|
|
|
79b470 |
#0 0x000003fffd1272b4 in __strcmp_vx () at /lib64/libc.so.6
|
|
|
79b470 |
#1 0x000003ffc260c3a8 in udevProcessCSS (device=0x3ff9018d130, def=0x3ff90194a90)
|
|
|
79b470 |
#2 0x000003ffc260cb78 in udevGetDeviceDetails (device=0x3ff9018d130, def=0x3ff90194a90)
|
|
|
79b470 |
#3 0x000003ffc260d126 in udevAddOneDevice (device=0x3ff9018d130)
|
|
|
79b470 |
#4 0x000003ffc260d414 in udevProcessDeviceListEntry (udev=0x3ffa810d800, list_entry=0x3ff90001990)
|
|
|
79b470 |
#5 0x000003ffc260d638 in udevEnumerateDevices (udev=0x3ffa810d800)
|
|
|
79b470 |
#6 0x000003ffc260e08e in nodeStateInitializeEnumerate (opaque=0x3ffa810d800)
|
|
|
79b470 |
#7 0x000003fffdaa14b6 in virThreadHelper (data=0x3ffa810df00)
|
|
|
79b470 |
#8 0x000003fffc309ed6 in start_thread ()
|
|
|
79b470 |
#9 0x000003fffd185e66 in thread_start ()
|
|
|
79b470 |
(gdb) p *def
|
|
|
79b470 |
$2 = {
|
|
|
79b470 |
name = 0x0,
|
|
|
79b470 |
sysfs_path = 0x3ff90198e80 "/sys/devices/css0/0.0.ff40",
|
|
|
79b470 |
parent = 0x0,
|
|
|
79b470 |
parent_sysfs_path = 0x0,
|
|
|
79b470 |
parent_wwnn = 0x0,
|
|
|
79b470 |
parent_wwpn = 0x0,
|
|
|
79b470 |
parent_fabric_wwn = 0x0,
|
|
|
79b470 |
driver = 0x0,
|
|
|
79b470 |
devnode = 0x0,
|
|
|
79b470 |
devlinks = 0x3ff90194670,
|
|
|
79b470 |
caps = 0x3ff90194380
|
|
|
79b470 |
}
|
|
|
79b470 |
|
|
|
79b470 |
Fixes: 05e6cdafa6e0 ("node_device: detect CSS devices")
|
|
|
79b470 |
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
|
|
|
79b470 |
Reviewed-by: Erik Skultety <eskultet@redhat.com>
|
|
|
79b470 |
Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
|
|
|
79b470 |
(cherry picked from commit cb09344a2cccc0cc9bcefa3cb53d7af45ba92631)
|
|
|
79b470 |
https://bugzilla.redhat.com/show_bug.cgi?id=1853289
|
|
|
79b470 |
https://bugzilla.redhat.com/show_bug.cgi?id=1865932
|
|
|
79b470 |
Message-Id: <20201008150700.52157-6-bfiuczyn@redhat.com>
|
|
|
79b470 |
Reviewed-by: Erik Skultety <eskultet@redhat.com>
|
|
|
79b470 |
---
|
|
|
79b470 |
src/node_device/node_device_udev.c | 5 +++--
|
|
|
79b470 |
1 file changed, 3 insertions(+), 2 deletions(-)
|
|
|
79b470 |
|
|
|
79b470 |
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
|
|
|
79b470 |
index b6b28bc35a..88cf1edf50 100644
|
|
|
79b470 |
--- a/src/node_device/node_device_udev.c
|
|
|
79b470 |
+++ b/src/node_device/node_device_udev.c
|
|
|
79b470 |
@@ -1130,8 +1130,9 @@ udevProcessCSS(struct udev_device *device,
|
|
|
79b470 |
virNodeDeviceDefPtr def)
|
|
|
79b470 |
{
|
|
|
79b470 |
/* only process IO subchannel and vfio-ccw devices to keep the list sane */
|
|
|
79b470 |
- if (STRNEQ(def->driver, "io_subchannel") &&
|
|
|
79b470 |
- STRNEQ(def->driver, "vfio_ccw"))
|
|
|
79b470 |
+ if (!def->driver ||
|
|
|
79b470 |
+ (STRNEQ(def->driver, "io_subchannel") &&
|
|
|
79b470 |
+ STRNEQ(def->driver, "vfio_ccw")))
|
|
|
79b470 |
return -1;
|
|
|
79b470 |
|
|
|
79b470 |
if (udevGetCCWAddress(def->sysfs_path, &def->caps->data) < 0)
|
|
|
79b470 |
--
|
|
|
79b470 |
2.28.0
|
|
|
79b470 |
|