summaryrefslogtreecommitdiff
path: root/kernel/power/swap.c
diff options
context:
space:
mode:
authorChristophe Leroy <christophe.leroy@csgroup.eu>2024-02-18 09:40:58 +0100
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2024-02-22 20:08:03 +0100
commitf4311756a83fb01c28a9bf841cbb7eb2b318eebf (patch)
tree3d8713631aeb8c1a5848ac3078cdb3a14fa97811 /kernel/power/swap.c
parent3fec6e5961b77af6a952b77f5c2ea26f7513b216 (diff)
downloadlinux-next-f4311756a83fb01c28a9bf841cbb7eb2b318eebf.tar.gz
linux-next-f4311756a83fb01c28a9bf841cbb7eb2b318eebf.zip
PM: hibernate: Don't ignore return from set_memory_ro()
set_memory_ro() and set_memory_rw() can fail, leaving memory unprotected. Take the returned value into account and abort in case of failure. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'kernel/power/swap.c')
-rw-r--r--kernel/power/swap.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/power/swap.c b/kernel/power/swap.c
index 6513035f2f7f..364342cc7f2d 100644
--- a/kernel/power/swap.c
+++ b/kernel/power/swap.c
@@ -1134,8 +1134,8 @@ static int load_image(struct swap_map_handle *handle,
ret = err2;
if (!ret) {
pr_info("Image loading done\n");
- snapshot_write_finalize(snapshot);
- if (!snapshot_image_loaded(snapshot))
+ ret = snapshot_write_finalize(snapshot);
+ if (!ret && !snapshot_image_loaded(snapshot))
ret = -ENODATA;
}
swsusp_show_speed(start, stop, nr_to_read, "Read");
@@ -1486,8 +1486,8 @@ out_finish:
stop = ktime_get();
if (!ret) {
pr_info("Image loading done\n");
- snapshot_write_finalize(snapshot);
- if (!snapshot_image_loaded(snapshot))
+ ret = snapshot_write_finalize(snapshot);
+ if (!ret && !snapshot_image_loaded(snapshot))
ret = -ENODATA;
if (!ret) {
if (swsusp_header->flags & SF_CRC32_MODE) {