clk: sifive: allocate sufficient memory for struct __prci_data
authorVincent Chen <vincent.chen@sifive.com>
Tue, 23 Jun 2020 01:24:17 +0000 (09:24 +0800)
committerPalmer Dabbelt <palmerdabbelt@google.com>
Thu, 25 Jun 2020 22:04:13 +0000 (15:04 -0700)
commitd0a5fdf4cc83dabcdea668f971b8a2e916437711
treee935af46c7523b5276860f2f617033e962023ffd
parenta0fc3b32893b29a7b3a2771b6d63bae16cb1e8de
clk: sifive: allocate sufficient memory for struct __prci_data

The (struct __prci_data).hw_clks.hws is an array with dynamic elements.
Using struct_size(pd, hw_clks.hws, ARRAY_SIZE(__prci_init_clocks))
instead of sizeof(*pd) to get the correct memory size of
struct __prci_data for sifive/fu540-prci. After applying this
modifications, the kernel runs smoothly with CONFIG_SLAB_FREELIST_RANDOM
enabled on the HiFive unleashed board.

Fixes: 30b8e27e3b58 ("clk: sifive: add a driver for the SiFive FU540 PRCI IP block")
Signed-off-by: Vincent Chen <vincent.chen@sifive.com>
Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
drivers/clk/sifive/fu540-prci.c