diff options
| author | Kees Cook <kees@kernel.org> | 2025-11-19 14:54:43 -0800 |
|---|---|---|
| committer | Sami Tolvanen <samitolvanen@google.com> | 2025-12-22 16:35:54 +0000 |
| commit | 68e85558587e6bbb5c3ea3c8b4c71ab852e4b53e (patch) | |
| tree | dc8ceb53ff0c1b9fed80938963431d506ac97d13 /kernel/module | |
| parent | ddc54f912a551f6eb0bbcfc3880f45fe27a252cb (diff) | |
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>
Diffstat (limited to 'kernel/module')
| -rw-r--r-- | kernel/module/decompress.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/kernel/module/decompress.c b/kernel/module/decompress.c index 474e68f0f063..36f52a232a12 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; } |
