From: Kees Cook Date: Wed, 19 Nov 2025 22:54:43 +0000 (-0800) Subject: module/decompress: Avoid open-coded kvrealloc() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=68e85558587e6bbb5c3ea3c8b4c71ab852e4b53e;p=thirdparty%2Flinux.git module/decompress: Avoid open-coded kvrealloc() Replace open-coded allocate/copy with kvrealloc(). Signed-off-by: Kees Cook Reviewed-by: Petr Pavlu Signed-off-by: Sami Tolvanen --- diff --git a/kernel/module/decompress.c b/kernel/module/decompress.c index 474e68f0f0634..36f52a232a120 100644 --- a/kernel/module/decompress.c +++ b/kernel/module/decompress.c @@ -17,16 +17,16 @@ static int module_extend_max_pages(struct load_info *info, unsigned int extent) { struct page **new_pages; + unsigned int new_max = info->max_pages + extent; - new_pages = kvmalloc_array(info->max_pages + extent, - sizeof(info->pages), GFP_KERNEL); + new_pages = kvrealloc(info->pages, + size_mul(new_max, sizeof(*info->pages)), + GFP_KERNEL); if (!new_pages) return -ENOMEM; - memcpy(new_pages, info->pages, info->max_pages * sizeof(info->pages)); - kvfree(info->pages); info->pages = new_pages; - info->max_pages += extent; + info->max_pages = new_max; return 0; }