X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fmount.c;h=679d15c50a4767618d6e4d803dc6fe060cc914ce;hp=bccf6c5bfa8098e7426d2be8daf6361d0ee1677a;hb=5cca8defd2717669c69d13c479c0885af5b534bd;hpb=9d05dd2e1ef814a714214004f927ce82c9890fa6 diff --git a/src/core/mount.c b/src/core/mount.c index bccf6c5bf..679d15c50 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -1535,15 +1535,22 @@ static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) { if (!tb || !itr) return log_oom(); - mnt_table_parse_mtab(tb, NULL); - if (r) + r = mnt_table_parse_mtab(tb, NULL); + if (r < 0) return r; - while (mnt_table_next_fs(tb, itr, &fs) == 0) { + r = 0; + for (;;) { const char *device, *path, *options, *fstype; _cleanup_free_ const char *d = NULL, *p = NULL; int k; + k = mnt_table_next_fs(tb, itr, &fs); + if (k == 1) + break; + else if (k < 0) + return log_error_errno(k, "Failed to get next entry from /etc/fstab: %m"); + device = mnt_fs_get_source(fs); path = mnt_fs_get_target(fs); options = mnt_fs_get_options(fs); @@ -1555,7 +1562,7 @@ static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) { return log_oom(); k = mount_add_one(m, d, p, options, fstype, set_flags); - if (k < 0) + if (r == 0 && k < 0) r = k; }