]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tree-wide: if get_block_device() returns zero devno, check for it in all cases 16973/head
authorLennart Poettering <lennart@poettering.net>
Mon, 7 Sep 2020 17:01:41 +0000 (19:01 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 8 Sep 2020 16:10:26 +0000 (18:10 +0200)
And add a comment for the existing cases where things aren't clear
already.

src/basic/quota-util.c
src/gpt-auto-generator/gpt-auto-generator.c
src/partition/growfs.c
src/shared/sleep-config.c
src/volatile-root/volatile-root.c

index e048f5571fc9722173231fa39c259b339c1c00c5..96ea9ee3643498ad91ffe0f12b11b66412c6ce6e 100644 (file)
@@ -34,7 +34,7 @@ int quotactl_path(int cmd, const char *path, int id, void *addr) {
         r = get_block_device(path, &devno);
         if (r < 0)
                 return r;
-        if (devno == 0)
+        if (devno == 0) /* Doesn't have a block device */
                 return -ENODEV;
 
         return quotactl_devno(cmd, devno, id, addr);
index d1c90266a8fe52fd5ed86dba2fd22c59161cb514..16086c8b86c850b7d3b6360d7572a8c48730f400 100644 (file)
@@ -733,7 +733,7 @@ static int add_mounts(void) {
                 return btrfs_log_dev_root(LOG_ERR, r, "root file system");
         if (r < 0)
                 return log_error_errno(r, "Failed to determine block device of root file system: %m");
-        if (r == 0) {
+        if (r == 0) { /* Not backed by block device */
                 r = get_block_device_harder("/usr", &devno);
                 if (r == -EUCLEAN)
                         return btrfs_log_dev_root(LOG_ERR, r, "/usr");
index 8c1a84d981e12c9473f1e0fc59fa64bb9af91694..3f34ad3f7c934f3dae48e29e19f2ce47f8fbd15d 100644 (file)
@@ -97,6 +97,8 @@ static int maybe_resize_underlying_device(const char *mountpath, dev_t main_devn
         if (r < 0)
                 return log_error_errno(r, "Failed to determine underlying block device of \"%s\": %m",
                                        mountpath);
+        if (devno == 0)
+                return log_error_errno(SYNTHETIC_ERRNO(ENODEV), "File system \"%s\" not backed by block device.", arg_target);
 
         log_debug("Underlying device %d:%d, main dev %d:%d, %s",
                   major(devno), minor(devno),
@@ -217,6 +219,8 @@ static int run(int argc, char *argv[]) {
                 return btrfs_log_dev_root(LOG_ERR, r, arg_target);
         if (r < 0)
                 return log_error_errno(r, "Failed to determine block device of \"%s\": %m", arg_target);
+        if (devno == 0)
+                return log_error_errno(SYNTHETIC_ERRNO(ENODEV), "File system \"%s\" not backed by block device.", arg_target);
 
         r = maybe_resize_underlying_device(arg_target, devno);
         if (r < 0)
index 0dccc8f9700491e5d7b1705065e75ca66a1a09ac..96c125b993e8a0e60accd25b0b733cde084b45fe 100644 (file)
@@ -403,6 +403,8 @@ int find_hibernate_location(HibernateLocation **ret_hibernate_location) {
                 r = swap_device_to_device_id(swap, &swap_device);
                 if (r < 0)
                         return log_debug_errno(r, "%s: failed to query device number: %m", swap->device);
+                if (swap_device == 0)
+                        return log_debug_errno(SYNTHETIC_ERRNO(ENODEV), "%s: not backed by block device.", swap->device);
 
                 hibernate_location = hibernate_location_free(hibernate_location);
                 hibernate_location = new(HibernateLocation, 1);
index e55864d6cc14665b615d734dc0a17a20986d7260..6a084642454a219686e7ecb517d493ee53e35e40 100644 (file)
@@ -175,7 +175,7 @@ static int run(int argc, char *argv[]) {
         r = get_block_device_harder(path, &devt);
         if (r < 0)
                 return log_error_errno(r, "Failed to determine device major/minor of %s: %m", path);
-        else if (r > 0) {
+        else if (r > 0) { /* backed by block device */
                 _cleanup_free_ char *dn = NULL;
 
                 r = device_path_make_major_minor(S_IFBLK, devt, &dn);