[PATCH] lib: sbi: fwft: fix incorrect size passed to sbi_zalloc()
Anup Patel
anup at brainfault.org
Thu Aug 1 20:21:02 PDT 2024
On Thu, Aug 1, 2024 at 6:20 PM Carlos López <carlos.lopezr4096 at gmail.com> wrote:
>
> The fwt_hart_state struct inciludes a flexible array member, so its
> allocation size will be that of the struct itself, plus that of each
> of the members in the array. When calculating this size, instead of
> taking the size of the struct, the size of a pointer to it was taken,
> which is incorrect. Luckily, this happenned to not produce memory
> corruption because the size of the non-flexible members of the struct
> is the same as the size of a pointer.
>
> Signed-off-by: Carlos López <carlos.lopezr4096 at gmail.com>
Applied this patch to the riscv/opensbi repo.
Thanks,
Anup
> ---
> lib/sbi/sbi_fwft.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/sbi/sbi_fwft.c b/lib/sbi/sbi_fwft.c
> index f1ae915..ef881ef 100644
> --- a/lib/sbi/sbi_fwft.c
> +++ b/lib/sbi/sbi_fwft.c
> @@ -251,7 +251,7 @@ int sbi_fwft_init(struct sbi_scratch *scratch, bool cold_boot)
>
> fhs = fwft_get_hart_state_ptr(scratch);
> if (!fhs) {
> - fhs = sbi_zalloc(sizeof(fhs) + array_size(features) * sizeof(struct fwft_config));
> + fhs = sbi_zalloc(sizeof(*fhs) + array_size(features) * sizeof(struct fwft_config));
> if (!fhs)
> return SBI_ENOMEM;
>
> --
> 2.39.2
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi
More information about the opensbi
mailing list