]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PM: hibernate: return -ENODATA if the snapshot image is not loaded
authorAlberto Garcia <berto@igalia.com>
Mon, 9 Mar 2026 17:39:42 +0000 (18:39 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 20 Mar 2026 18:55:42 +0000 (19:55 +0100)
snapshot_image_loaded() is used in both the in-kernel and the
userspace restore path to ensure that the snapshot image has been
completely loaded. However the latter path returns -EPERM in such
situations, which is meant for cases where the operation is neither
write-only nor ready.

This patch updates the check so the returned error code is -ENODATA in
both cases.

Suggested-by: Brian Geffon <bgeffon@google.com>
Signed-off-by: Alberto Garcia <berto@igalia.com>
Acked-by: Brian Geffon <bgeffon@google.com>
Link: https://patch.msgid.link/8cfda38659c623f5392f3458cb32504ffd556a74.1773075892.git.berto@igalia.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
kernel/power/user.c

index 4401cfe26e5c98ec038d3505d2f008794e8cb7c0..be77f3556bd7da592c068458ca2e9d430ad4cc38 100644 (file)
@@ -322,11 +322,14 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
                error = snapshot_write_finalize(&data->handle);
                if (error)
                        break;
-               if (data->mode != O_WRONLY || !data->frozen ||
-                   !snapshot_image_loaded(&data->handle)) {
+               if (data->mode != O_WRONLY || !data->frozen) {
                        error = -EPERM;
                        break;
                }
+               if (!snapshot_image_loaded(&data->handle)) {
+                       error = -ENODATA;
+                       break;
+               }
                error = hibernation_restore(data->platform_support);
                break;