[PATCH] lib: sbi: dbtr: fix potential NULL pointer dereferences
Anup Patel
anup at brainfault.org
Thu Aug 1 20:20:45 PDT 2024
On Thu, Aug 1, 2024 at 6:03 PM Carlos López <carlos.lopezr4096 at gmail.com> wrote:
>
> In several dbtr functions, we first check that the dbtr trigger is not
> NULL and that its state is what we expect. However, it only makes
> sense to perform the second check if the dbtr trigger is not NULL.
> Othwerwise we will dereference a NULL pointer. Thus, change the
> condition so that it shortcuts to the first check if necessary.
>
> Signed-off-by: Carlos López <carlos.lopezr4096 at gmail.com>
Applied this patch to the riscv/opensbi repo.
Thanks,
Anup
> ---
> lib/sbi/sbi_dbtr.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/lib/sbi/sbi_dbtr.c b/lib/sbi/sbi_dbtr.c
> index 6e2083e..27a8b91 100644
> --- a/lib/sbi/sbi_dbtr.c
> +++ b/lib/sbi/sbi_dbtr.c
> @@ -357,7 +357,7 @@ static void dbtr_trigger_enable(struct sbi_dbtr_trigger *trig)
> unsigned long state;
> unsigned long tdata1;
>
> - if (!trig && !(trig->state & RV_DBTR_BIT_MASK(TS, MAPPED)))
> + if (!trig || !(trig->state & RV_DBTR_BIT_MASK(TS, MAPPED)))
> return;
>
> state = trig->state;
> @@ -403,7 +403,7 @@ static void dbtr_trigger_disable(struct sbi_dbtr_trigger *trig)
> {
> unsigned long tdata1;
>
> - if (!trig && !(trig->state & RV_DBTR_BIT_MASK(TS, MAPPED)))
> + if (!trig || !(trig->state & RV_DBTR_BIT_MASK(TS, MAPPED)))
> return;
>
> tdata1 = trig->tdata1;
> @@ -429,7 +429,7 @@ static void dbtr_trigger_disable(struct sbi_dbtr_trigger *trig)
>
> static void dbtr_trigger_clear(struct sbi_dbtr_trigger *trig)
> {
> - if (!trig && !(trig->state & RV_DBTR_BIT_MASK(TS, MAPPED)))
> + if (!trig || !(trig->state & RV_DBTR_BIT_MASK(TS, MAPPED)))
> return;
>
> csr_write(CSR_TSELECT, trig->index);
> --
> 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