summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2021-02-09 09:47:08 -0600
committerDavid Teigland <teigland@redhat.com>2021-02-09 09:52:53 -0600
commitf74f94c2ddb1d33d75d325c959344a566a621fd5 (patch)
treea05fc8bfa410388b4b9f813c9c4e45f07cc0fc05
parent427121efc76f1a11df5d06c11ea4f095305b6333 (diff)
downloadlvm2-f74f94c2ddb1d33d75d325c959344a566a621fd5.tar.gz
dev_get_primary_dev: fix invalid path check
Fix commit bee9f4efdd81 "filter-mpath: work with nvme devices" which removed setting the path for readlink.
-rw-r--r--lib/device/dev-type.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/device/dev-type.c b/lib/device/dev-type.c
index b7bca361f..0411572fa 100644
--- a/lib/device/dev-type.c
+++ b/lib/device/dev-type.c
@@ -614,7 +614,12 @@ int dev_get_primary_dev(struct dev_types *dt, struct device *dev, dev_t *result)
* - basename ../../block/md0/md0 = md0
* Parent's 'dev' sysfs attribute = /sys/block/md0/dev
*/
- if ((size = readlink(dirname(path), temp_path, sizeof(temp_path) - 1)) < 0) {
+ if (dm_snprintf(path, sizeof(path), "%s/dev/block/%d:%d",
+ dm_sysfs_dir(), major, minor) < 0) {
+ log_warn("WARNING: %s: major:minor sysfs path is too long.", dev_name(dev));
+ return 0;
+ }
+ if ((size = readlink(path, temp_path, sizeof(temp_path) - 1)) < 0) {
log_warn("WARNING: Readlink of %s failed.", path);
goto out;
}