swsusp: don't pass a stack address to blkdev_get_by_path
authorChristoph Hellwig <hch@lst.de>
Thu, 8 Jun 2023 11:02:39 +0000 (13:02 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 12 Jun 2023 14:04:04 +0000 (08:04 -0600)
holder is just an on-stack pointer that can easily be reused by other calls,
replace it with a static variable that doesn't change.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Acked-by: Rafael J. Wysocki <rafael@kernel.org>
Link: https://lore.kernel.org/r/20230608110258.189493-12-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
kernel/power/swap.c

index 81aec3b..b03ff1a 100644 (file)
@@ -1510,6 +1510,8 @@ end:
        return error;
 }
 
+static void *swsusp_holder;
+
 /**
  *      swsusp_check - Check for swsusp signature in the resume device
  */
@@ -1517,14 +1519,13 @@ end:
 int swsusp_check(bool snapshot_test)
 {
        int error;
-       void *holder;
        fmode_t mode = FMODE_READ;
 
        if (snapshot_test)
                mode |= FMODE_EXCL;
 
        hib_resume_bdev = blkdev_get_by_dev(swsusp_resume_device,
-                                           mode, &holder, NULL);
+                                           mode, &swsusp_holder, NULL);
        if (!IS_ERR(hib_resume_bdev)) {
                set_blocksize(hib_resume_bdev, PAGE_SIZE);
                clear_page(swsusp_header);