From d18b300933cc1d0f87bc0f0537e3532ae6ca19d3 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 21 May 2019 18:00:32 +0200 Subject: [PATCH 1/3] blockdev-util: propagate actual error --- src/basic/blockdev-util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/basic/blockdev-util.c b/src/basic/blockdev-util.c index 625bbdd943..5e7dc06c99 100644 --- a/src/basic/blockdev-util.c +++ b/src/basic/blockdev-util.c @@ -31,7 +31,7 @@ int block_get_whole_disk(dev_t d, dev_t *ret) { /* If it is a partition find the originating device */ xsprintf_sys_block_path(p, "/partition", d); if (access(p, F_OK) < 0) - return -ENOENT; + return -errno; /* Get parent dev_t */ xsprintf_sys_block_path(p, "/../dev", d); @@ -46,7 +46,7 @@ int block_get_whole_disk(dev_t d, dev_t *ret) { /* Only return this if it is really good enough for us. */ xsprintf_sys_block_path(p, "/queue", devt); if (access(p, F_OK) < 0) - return -ENOENT; + return -errno; *ret = devt; return 0; From 51f14fa11120998e2cd79c2bfcab734423d2f0ee Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 21 May 2019 18:00:09 +0200 Subject: [PATCH 2/3] blockdev: filter out invalid block devices early --- src/basic/blockdev-util.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/basic/blockdev-util.c b/src/basic/blockdev-util.c index 5e7dc06c99..6bbb723dfe 100644 --- a/src/basic/blockdev-util.c +++ b/src/basic/blockdev-util.c @@ -21,6 +21,9 @@ int block_get_whole_disk(dev_t d, dev_t *ret) { assert(ret); + if (major(d) == 0) + return -ENODEV; + /* If it has a queue this is good enough for us */ xsprintf_sys_block_path(p, "/queue", d); if (access(p, F_OK) >= 0) { From a0ea1dee7be452183365748c245271a619468dc5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 21 May 2019 18:00:54 +0200 Subject: [PATCH 3/3] blockdev-util: let us know if block_get_whole_disk() did anything --- src/basic/blockdev-util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/basic/blockdev-util.c b/src/basic/blockdev-util.c index 6bbb723dfe..0ee14cbc0b 100644 --- a/src/basic/blockdev-util.c +++ b/src/basic/blockdev-util.c @@ -52,7 +52,7 @@ int block_get_whole_disk(dev_t d, dev_t *ret) { return -errno; *ret = devt; - return 0; + return 1; } int get_block_device(const char *path, dev_t *dev) {