[PATCH] riscv: Use kvmalloc_array on relocation_hashtable
Alexandre Ghiti
alex at ghiti.fr
Tue Apr 1 23:56:17 PDT 2025
Hi Will,
On 02/04/2025 07:34, wgpierce17 at gmail.com wrote:
> From: Will Pierce <wgpierce17 at gmail.com>
>
> The number of relocations may be a huge value that is unallocatable
> by kmalloc. Use kvmalloc instead so that it does not fail.
>
> Signed-off-by: Will Pierce <wgpierce17 at gmail.com>
> ---
> arch/riscv/kernel/module.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/arch/riscv/kernel/module.c b/arch/riscv/kernel/module.c
> index 47d0ebeec93c..bae3db50647c 100644
> --- a/arch/riscv/kernel/module.c
> +++ b/arch/riscv/kernel/module.c
> @@ -648,7 +648,7 @@ process_accumulated_relocations(struct module *me,
> kfree(bucket_iter);
> }
>
> - kfree(*relocation_hashtable);
> + kvfree(*relocation_hashtable);
> }
>
> static int add_relocation_to_accumulate(struct module *me, int type,
> @@ -752,7 +752,8 @@ initialize_relocation_hashtable(unsigned int num_relocations,
>
> hashtable_size <<= should_double_size;
>
> - *relocation_hashtable = kmalloc_array(hashtable_size,
> + /* Number of relocations may be large, so kvmalloc it */
> + *relocation_hashtable = kvmalloc_array(hashtable_size,
> sizeof(**relocation_hashtable),
> GFP_KERNEL);
> if (!*relocation_hashtable)
Let's add a fixes tag:
Fixes: 8fd6c5142395 ("riscv: Add remaining module relocations")
Since Clément suggested this solution:
Suggested-by: Clément Léger <cleger at rivosinc.com>
And finally, this looks good to me so:
Reviewed-by: Alexandre Ghiti <alexghiti at rivosinc.com>
It's a bit late for rc1 so I'll take this one for a next rc.
Thanks for the patch!
Alex
More information about the linux-riscv
mailing list