diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c index 30e53f3a36..de1f6c7ec1 100644 --- a/src/sleep/sleep.c +++ b/src/sleep/sleep.c @@ -262,16 +262,18 @@ static int execute( return log_error_errno(r, "Failed to find location to hibernate to: %m"); resume_set = r > 0; + r = write_efi_hibernate_location(hibernate_location, !resume_set); if (!resume_set) { + if (r == -EOPNOTSUPP) + return log_error_errno(r, "No valid 'resume=' option found, refusing to hibernate."); + if (r < 0) + return r; + r = write_kernel_hibernate_location(hibernate_location); if (r < 0) return log_error_errno(r, "Failed to prepare for hibernation: %m"); } - r = write_efi_hibernate_location(hibernate_location, !resume_set); - if (r < 0 && !resume_set) - return r; - r = write_mode(modes); if (r < 0) return log_error_errno(r, "Failed to write mode to /sys/power/disk: %m");