2021-06-09 17:11:55

by Clément Léger

[permalink] [raw]
Subject: [PATCH] clk: at91: fix count of periph clocks passed to pmc_data_allocate

When allocating clk_hw structure, only the periph32 clocks are considered.
Since sama5d2_periphck are also added to the phws there is currently an
out of bound write. Fix this by adding the count of periphck to periph32ck.

Signed-off-by: Clément Léger <[email protected]>
---
drivers/clk/at91/sama5d2.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clk/at91/sama5d2.c b/drivers/clk/at91/sama5d2.c
index 3d1f78176c3e..663b73a032ee 100644
--- a/drivers/clk/at91/sama5d2.c
+++ b/drivers/clk/at91/sama5d2.c
@@ -170,7 +170,7 @@ static void __init sama5d2_pmc_setup(struct device_node *np)

sama5d2_pmc = pmc_data_allocate(PMC_AUDIOPLLCK + 1,
nck(sama5d2_systemck),
- nck(sama5d2_periph32ck),
+ nck(sama5d2_periphck) + nck(sama5d2_periph32ck),
nck(sama5d2_gck), 3);
if (!sama5d2_pmc)
return;
--
2.32.0


2021-06-09 17:14:18

by Alexandre Belloni

[permalink] [raw]
Subject: Re: [PATCH] clk: at91: fix count of periph clocks passed to pmc_data_allocate

hi,

Subject should have been:
clk: at91: sama5d2: fix count of periph clocks passed to pmc_data_allocate



On 09/06/2021 10:01:44+0200, Cl?ment L?ger wrote:
> When allocating clk_hw structure, only the periph32 clocks are considered.
> Since sama5d2_periphck are also added to the phws there is currently an
> out of bound write. Fix this by adding the count of periphck to periph32ck.
>
> Signed-off-by: Cl?ment L?ger <[email protected]>
Fixes: a2038077de9a ("clk: at91: add sama5d2 PMC driver")

> ---
> drivers/clk/at91/sama5d2.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/clk/at91/sama5d2.c b/drivers/clk/at91/sama5d2.c
> index 3d1f78176c3e..663b73a032ee 100644
> --- a/drivers/clk/at91/sama5d2.c
> +++ b/drivers/clk/at91/sama5d2.c
> @@ -170,7 +170,7 @@ static void __init sama5d2_pmc_setup(struct device_node *np)
>
> sama5d2_pmc = pmc_data_allocate(PMC_AUDIOPLLCK + 1,
> nck(sama5d2_systemck),
> - nck(sama5d2_periph32ck),
> + nck(sama5d2_periphck) + nck(sama5d2_periph32ck),
> nck(sama5d2_gck), 3);
> if (!sama5d2_pmc)
> return;
> --
> 2.32.0
>

--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

2021-07-08 14:17:10

by Clément Léger

[permalink] [raw]
Subject: Re: [PATCH] clk: at91: fix count of periph clocks passed to pmc_data_allocate

Hi,

Le Wed, 9 Jun 2021 10:31:01 +0200,
Alexandre Belloni <[email protected]> a écrit :

> hi,
>
> Subject should have been:
> clk: at91: sama5d2: fix count of periph clocks passed to
> pmc_data_allocate
>

This patch can actually be discarded since it won't fix allocation at
all but will just allocate more data than needed since nck already
returns the max .id field of the periph array.

>
>
> On 09/06/2021 10:01:44+0200, Clément Léger wrote:
> > When allocating clk_hw structure, only the periph32 clocks are
> > considered. Since sama5d2_periphck are also added to the phws there
> > is currently an out of bound write. Fix this by adding the count of
> > periphck to periph32ck.
> >
> > Signed-off-by: Clément Léger <[email protected]>
> Fixes: a2038077de9a ("clk: at91: add sama5d2 PMC driver")
>
> > ---
> > drivers/clk/at91/sama5d2.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/clk/at91/sama5d2.c b/drivers/clk/at91/sama5d2.c
> > index 3d1f78176c3e..663b73a032ee 100644
> > --- a/drivers/clk/at91/sama5d2.c
> > +++ b/drivers/clk/at91/sama5d2.c
> > @@ -170,7 +170,7 @@ static void __init sama5d2_pmc_setup(struct
> > device_node *np)
> > sama5d2_pmc = pmc_data_allocate(PMC_AUDIOPLLCK + 1,
> > nck(sama5d2_systemck),
> > - nck(sama5d2_periph32ck),
> > + nck(sama5d2_periphck) +
> > nck(sama5d2_periph32ck), nck(sama5d2_gck), 3);
> > if (!sama5d2_pmc)
> > return;
> > --
> > 2.32.0
> >
>