2017-07-27 16:18:04

by Jerome Brunet

[permalink] [raw]
Subject: [PATCH 0/2] clk: meson: fix protection against undefined clks

If the last clkids defined have no hw pointer associated with them in
the hw_onecell_data array, the initialization is going to crash badly
because the array is not big enough.

The patchset makes sure the array is big enough, and that each clkid is
associated with a valid hw pointer, or NULL.

Doing it in two patches to ease backport, since we are not fixing the
same commit on meson8b and gxbb

Jerome Brunet (2):
clk: meson: meson8b: fix protection against undefined clks
clk: meson: gxbb: fix protection against undefined clks

drivers/clk/meson/gxbb.c | 2 ++
drivers/clk/meson/meson8b.c | 1 +
2 files changed, 3 insertions(+)

--
2.9.4


2017-07-27 16:18:08

by Jerome Brunet

[permalink] [raw]
Subject: [PATCH 1/2] clk: meson: meson8b: fix protection against undefined clks

meson8b clock driver gracefully handles case where the clkid is defined
but the clock hw pointer is not provided, as long as it is not at the end
of the hw_onecell_data array.

This patch ensure that the last entries are defined as well to handle
this particular case.

Fixes: e92f7cca446e ("clk: meson8b: clean up fixed rate clocks")
Signed-off-by: Jerome Brunet <[email protected]>
---
drivers/clk/meson/meson8b.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/clk/meson/meson8b.c b/drivers/clk/meson/meson8b.c
index bb3f1de876b1..7629aa09472a 100644
--- a/drivers/clk/meson/meson8b.c
+++ b/drivers/clk/meson/meson8b.c
@@ -585,6 +585,7 @@ static struct clk_hw_onecell_data meson8b_hw_onecell_data = {
[CLKID_MPLL0] = &meson8b_mpll0.hw,
[CLKID_MPLL1] = &meson8b_mpll1.hw,
[CLKID_MPLL2] = &meson8b_mpll2.hw,
+ [CLK_NR_CLKS] = NULL,
},
.num = CLK_NR_CLKS,
};
--
2.9.4

2017-07-27 16:25:50

by Jerome Brunet

[permalink] [raw]
Subject: [PATCH 2/2] clk: meson: gxbb: fix protection against undefined clks

gxbb clock driver gracefully handles case where the clkid is defined but
the clock hw pointer is not provided, as long as it is not at the end of
the hw_onecell_data array.

This patch ensure that the last entries are defined as well to handle
this particular case.

Fixes: a70c6e06ed7c ("clk: meson: gxbb: protect against holes in the onecell_data array")
Signed-off-by: Jerome Brunet <[email protected]>
---
drivers/clk/meson/gxbb.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
index a897ea45327c..8409d86cda24 100644
--- a/drivers/clk/meson/gxbb.c
+++ b/drivers/clk/meson/gxbb.c
@@ -1183,6 +1183,7 @@ static struct clk_hw_onecell_data gxbb_hw_onecell_data = {
[CLKID_32K_CLK] = &gxbb_32k_clk.hw,
[CLKID_32K_CLK_SEL] = &gxbb_32k_clk_sel.hw,
[CLKID_32K_CLK_DIV] = &gxbb_32k_clk_div.hw,
+ [NR_CLKS] = NULL,
},
.num = NR_CLKS,
};
@@ -1305,6 +1306,7 @@ static struct clk_hw_onecell_data gxl_hw_onecell_data = {
[CLKID_32K_CLK] = &gxbb_32k_clk.hw,
[CLKID_32K_CLK_SEL] = &gxbb_32k_clk_sel.hw,
[CLKID_32K_CLK_DIV] = &gxbb_32k_clk_div.hw,
+ [NR_CLKS] = NULL,
},
.num = NR_CLKS,
};
--
2.9.4

2017-07-28 10:07:07

by Neil Armstrong

[permalink] [raw]
Subject: Re: [PATCH 0/2] clk: meson: fix protection against undefined clks

On 07/27/2017 06:17 PM, Jerome Brunet wrote:
> If the last clkids defined have no hw pointer associated with them in
> the hw_onecell_data array, the initialization is going to crash badly
> because the array is not big enough.
>
> The patchset makes sure the array is big enough, and that each clkid is
> associated with a valid hw pointer, or NULL.
>
> Doing it in two patches to ease backport, since we are not fixing the
> same commit on meson8b and gxbb
>
> Jerome Brunet (2):
> clk: meson: meson8b: fix protection against undefined clks
> clk: meson: gxbb: fix protection against undefined clks
>
> drivers/clk/meson/gxbb.c | 2 ++
> drivers/clk/meson/meson8b.c | 1 +
> 2 files changed, 3 insertions(+)
>

Applied to clk-meson's fixes/drivers !

Thanks,
Neil