]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
PM: hibernate: Use vmalloc_array() and vcalloc() to improve code
authorQianfeng Rong <rongqianfeng@vivo.com>
Sun, 17 Aug 2025 08:36:36 +0000 (16:36 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 1 Sep 2025 09:55:53 +0000 (11:55 +0200)
Remove array_size() calls and replace vmalloc() and vzalloc() with
vmalloc_array() and vcalloc() respectively to simplify the code in
save_compressed_image() and load_compressed_image().

vmalloc_array() is also optimized better, resulting in less
instructions being used, and vmalloc_array() handling overhead is
lower [1].

Link: https://lore.kernel.org/lkml/abc66ec5-85a4-47e1-9759-2f60ab111971@vivo.com/
Signed-off-by: Qianfeng Rong <rongqianfeng@vivo.com>
Link: https://patch.msgid.link/20250817083636.53872-1-rongqianfeng@vivo.com
[ rjw: Changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
kernel/power/swap.c

index ad13c461b657c5da861fc2d108a88d9c6e04837f..0beff7eeaabaf82e37b7613a1e00f49b36f52976 100644 (file)
@@ -712,7 +712,7 @@ static int save_compressed_image(struct swap_map_handle *handle,
                goto out_clean;
        }
 
-       data = vzalloc(array_size(nr_threads, sizeof(*data)));
+       data = vcalloc(nr_threads, sizeof(*data));
        if (!data) {
                pr_err("Failed to allocate %s data\n", hib_comp_algo);
                ret = -ENOMEM;
@@ -1225,14 +1225,14 @@ static int load_compressed_image(struct swap_map_handle *handle,
        nr_threads = num_online_cpus() - 1;
        nr_threads = clamp_val(nr_threads, 1, CMP_THREADS);
 
-       page = vmalloc(array_size(CMP_MAX_RD_PAGES, sizeof(*page)));
+       page = vmalloc_array(CMP_MAX_RD_PAGES, sizeof(*page));
        if (!page) {
                pr_err("Failed to allocate %s page\n", hib_comp_algo);
                ret = -ENOMEM;
                goto out_clean;
        }
 
-       data = vzalloc(array_size(nr_threads, sizeof(*data)));
+       data = vcalloc(nr_threads, sizeof(*data));
        if (!data) {
                pr_err("Failed to allocate %s data\n", hib_comp_algo);
                ret = -ENOMEM;