[lvm-devel] [PATCH] dev_name(): add to judge whether the dev->aliases list is empty

Wu Guanghao wuguanghao3 at huawei.com
Wed Dec 16 09:55:59 UTC 2020


If dev->aliases linked list is empty, then directly obtain the str address
of dm_str_list saved in dev->aliases.n, an unknown address will be returned,
which may cause segfault

Signed-off-by: Wu Guanghao <wuguanghao3 at huawei.com>
---
 lib/device/dev-cache.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lib/device/dev-cache.c b/lib/device/dev-cache.c
index d5f18ff..9441924 100644
--- a/lib/device/dev-cache.c
+++ b/lib/device/dev-cache.c
@@ -1629,8 +1629,8 @@ int dev_fd(struct device *dev)

 const char *dev_name(const struct device *dev)
 {
-	return (dev && dev->aliases.n) ? dm_list_item(dev->aliases.n, struct dm_str_list)->str :
-	    unknown_device_name();
+	return (dev && dev->aliases.n && !dm_list_empty(&dev->aliases)) ? \
+		dm_list_item(dev->aliases.n, struct dm_str_list)->str : unknown_device_name();
 }

 bool dev_cache_has_md_with_end_superblock(struct dev_types *dt)
-- 
1.8.3.1




More information about the lvm-devel mailing list