X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fumount.c;h=1e95ad70dd0beb85394c23fab0b6e25f9075ee7e;hb=a6b26d9011de60e1c41f51e8d2aab1d2f7bbf0f5;hp=3fcb90eca4d9219e128cca90c957b668ffd15b04;hpb=e1af7092a8e124eff5f7a668f0f1562c4df4b02f;p=elogind.git diff --git a/src/core/umount.c b/src/core/umount.c index 3fcb90eca..1e95ad70d 100644 --- a/src/core/umount.c +++ b/src/core/umount.c @@ -379,25 +379,23 @@ static int delete_loopback(const char *device) { } static int delete_dm(dev_t devnum) { - int fd, r; - struct dm_ioctl dm; + _cleanup_close_ int fd = -1; + int r; + struct dm_ioctl dm = { + .version = {DM_VERSION_MAJOR, + DM_VERSION_MINOR, + DM_VERSION_PATCHLEVEL}, + .data_size = sizeof(dm), + .dev = devnum, + }; assert(major(devnum) != 0); - if ((fd = open("/dev/mapper/control", O_RDWR|O_CLOEXEC)) < 0) + fd = open("/dev/mapper/control", O_RDWR|O_CLOEXEC); + if (fd < 0) return -errno; - zero(dm); - dm.version[0] = DM_VERSION_MAJOR; - dm.version[1] = DM_VERSION_MINOR; - dm.version[2] = DM_VERSION_PATCHLEVEL; - - dm.data_size = sizeof(dm); - dm.dev = devnum; - r = ioctl(fd, DM_DEV_REMOVE, &dm); - close_nointr_nofail(fd); - return r >= 0 ? 0 : -errno; } @@ -420,7 +418,7 @@ static int mount_points_list_umount(MountPoint **head, bool *changed, bool log_e * * Mount points can be stacked. If a mount * point is stacked below / or /usr, we - * cannnot umount or remount it directly, + * cannot umount or remount it directly, * since there is no way to refer to the * underlying mount. There's nothing we can do * about it for the general case, but we can