Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

module/decompress: Avoid open-coded kvrealloc()

Replace open-coded allocate/copy with kvrealloc().

Signed-off-by: Kees Cook <kees@kernel.org>
Reviewed-by: Petr Pavlu <petr.pavlu@suse.com>
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>

authored by

Kees Cook and committed by
Sami Tolvanen
68e85558 ddc54f91

+5 -5
+5 -5
kernel/module/decompress.c
··· 17 17 static int module_extend_max_pages(struct load_info *info, unsigned int extent) 18 18 { 19 19 struct page **new_pages; 20 + unsigned int new_max = info->max_pages + extent; 20 21 21 - new_pages = kvmalloc_array(info->max_pages + extent, 22 - sizeof(info->pages), GFP_KERNEL); 22 + new_pages = kvrealloc(info->pages, 23 + size_mul(new_max, sizeof(*info->pages)), 24 + GFP_KERNEL); 23 25 if (!new_pages) 24 26 return -ENOMEM; 25 27 26 - memcpy(new_pages, info->pages, info->max_pages * sizeof(info->pages)); 27 - kvfree(info->pages); 28 28 info->pages = new_pages; 29 - info->max_pages += extent; 29 + info->max_pages = new_max; 30 30 31 31 return 0; 32 32 }