|
|
c52f23 |
From b3719266bd5e3a9e6737d6bda60e543121ddf343 Mon Sep 17 00:00:00 2001
|
|
|
c52f23 |
From: David Teigland <teigland@redhat.com>
|
|
|
c52f23 |
Date: Tue, 9 Feb 2021 09:47:08 -0600
|
|
|
c52f23 |
Subject: [PATCH] dev_get_primary_dev: fix invalid path check
|
|
|
c52f23 |
|
|
|
c52f23 |
Fix commit bee9f4efdd81 "filter-mpath: work with nvme devices"
|
|
|
c52f23 |
which removed setting the path for readlink.
|
|
|
c52f23 |
|
|
|
c52f23 |
(cherry picked from commit f74f94c2ddb1d33d75d325c959344a566a621fd5)
|
|
|
c52f23 |
|
|
|
c52f23 |
Conflicts:
|
|
|
c52f23 |
lib/device/dev-type.c
|
|
|
c52f23 |
---
|
|
|
c52f23 |
lib/device/dev-type.c | 11 ++++++++---
|
|
|
c52f23 |
1 file changed, 8 insertions(+), 3 deletions(-)
|
|
|
c52f23 |
|
|
|
c52f23 |
diff --git a/lib/device/dev-type.c b/lib/device/dev-type.c
|
|
|
c52f23 |
index 379afa8..1342e97 100644
|
|
|
c52f23 |
--- a/lib/device/dev-type.c
|
|
|
c52f23 |
+++ b/lib/device/dev-type.c
|
|
|
c52f23 |
@@ -434,7 +434,7 @@ static int _has_sys_partition(struct device *dev)
|
|
|
c52f23 |
int minor = (int) MINOR(dev->dev);
|
|
|
c52f23 |
|
|
|
c52f23 |
/* check if dev is a partition */
|
|
|
c52f23 |
- if (dm_snprintf(path, sizeof(path), "%s/dev/block/%d:%d/partition",
|
|
|
c52f23 |
+ if (dm_snprintf(path, sizeof(path), "%sdev/block/%d:%d/partition",
|
|
|
c52f23 |
dm_sysfs_dir(), major, minor) < 0) {
|
|
|
c52f23 |
log_error("dm_snprintf partition failed");
|
|
|
c52f23 |
return 0;
|
|
|
c52f23 |
@@ -660,8 +660,13 @@ int dev_get_primary_dev(struct dev_types *dt, struct device *dev, dev_t *result)
|
|
|
c52f23 |
* - basename ../../block/md0/md0 = md0
|
|
|
c52f23 |
* Parent's 'dev' sysfs attribute = /sys/block/md0/dev
|
|
|
c52f23 |
*/
|
|
|
c52f23 |
- if ((size = readlink(dirname(path), temp_path, sizeof(temp_path) - 1)) < 0) {
|
|
|
c52f23 |
- log_sys_error("readlink", path);
|
|
|
c52f23 |
+ if (dm_snprintf(path, sizeof(path), "%sdev/block/%d:%d",
|
|
|
c52f23 |
+ dm_sysfs_dir(), major, minor) < 0) {
|
|
|
c52f23 |
+ log_warn("WARNING: %s: major:minor sysfs path is too long.", dev_name(dev));
|
|
|
c52f23 |
+ return 0;
|
|
|
c52f23 |
+ }
|
|
|
c52f23 |
+ if ((size = readlink(path, temp_path, sizeof(temp_path) - 1)) < 0) {
|
|
|
c52f23 |
+ log_warn("WARNING: Readlink of %s failed.", path);
|
|
|
c52f23 |
goto out;
|
|
|
c52f23 |
}
|
|
|
c52f23 |
|
|
|
c52f23 |
--
|
|
|
c52f23 |
1.8.3.1
|
|
|
c52f23 |
|