diff --git a/src/hibernate-resume/hibernate-resume-config.c b/src/hibernate-resume/hibernate-resume-config.c index fe4add2c19..e4be7ca245 100644 --- a/src/hibernate-resume/hibernate-resume-config.c +++ b/src/hibernate-resume/hibernate-resume-config.c @@ -204,13 +204,12 @@ void compare_hibernate_location_and_warn(const HibernateInfo *info) { int r; assert(info); - assert(info->from_efi || info->cmdline); - if (info->from_efi) - return; - if (!info->efi) + if (!info->cmdline || !info->efi) return; + assert(info->device == info->cmdline->device); + if (!path_equal(info->cmdline->device, info->efi->device)) { r = devnode_same(info->cmdline->device, info->efi->device); if (r < 0) @@ -256,11 +255,9 @@ int acquire_hibernate_info(HibernateInfo *ret) { if (i.cmdline) { i.device = i.cmdline->device; i.offset = i.cmdline->offset; - i.from_efi = false; } else if (i.efi) { i.device = i.efi->device; i.offset = i.efi->offset; - i.from_efi = true; } else return -ENODEV; diff --git a/src/hibernate-resume/hibernate-resume-config.h b/src/hibernate-resume/hibernate-resume-config.h index 364abf7912..365d9ccda5 100644 --- a/src/hibernate-resume/hibernate-resume-config.h +++ b/src/hibernate-resume/hibernate-resume-config.h @@ -27,7 +27,6 @@ typedef struct EFIHibernateLocation { typedef struct HibernateInfo { const char *device; uint64_t offset; /* in memory pages */ - bool from_efi; KernelHibernateLocation *cmdline; EFIHibernateLocation *efi; diff --git a/src/hibernate-resume/hibernate-resume.c b/src/hibernate-resume/hibernate-resume.c index 9d81332f26..175a0bda96 100644 --- a/src/hibernate-resume/hibernate-resume.c +++ b/src/hibernate-resume/hibernate-resume.c @@ -59,7 +59,7 @@ static int run(int argc, char *argv[]) { if (r <= 0) return r; - if (arg_info.from_efi) + if (arg_info.efi) clear_efi_hibernate_location(); } diff --git a/src/shared/hibernate-util.c b/src/shared/hibernate-util.c index 3eb13d48f6..2ce3781cbf 100644 --- a/src/shared/hibernate-util.c +++ b/src/shared/hibernate-util.c @@ -446,7 +446,7 @@ int hibernation_is_safe(void) { "Not running on EFI and resume= is not set. Hibernation is not safe."); if (bypass_space_check) - return true; + return 0; r = get_proc_meminfo_active(&active); if (r < 0) diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c index 21af3e9e52..6ff012d447 100644 --- a/src/sleep/sleep.c +++ b/src/sleep/sleep.c @@ -218,7 +218,6 @@ static int execute( NULL }; - _cleanup_(hibernation_device_done) HibernationDevice hibernation_device = {}; _cleanup_close_ int state_fd = -EBADF; int r; @@ -238,6 +237,7 @@ static int execute( /* Configure hibernation settings if we are supposed to hibernate */ if (sleep_operation_is_hibernation(operation)) { + _cleanup_(hibernation_device_done) HibernationDevice hibernation_device = {}; bool resume_set; r = find_suitable_hibernation_device(&hibernation_device);