clk: divider: fix incorrect usage of container_of
[ Upstream commit 12a26c29 ] divider_recalc_rate() is an helper function used by clock divider of different types, so the structure containing the 'hw' pointer is not always a 'struct clk_divider' At the following line: > div = _get_div(table, val, flags, divider->width); in several cases, the value of 'divider->width' is garbage as the actual structure behind this memory is not a 'struct clk_divider' Fortunately, this width value is used by _get_val() only when CLK_DIVIDER_MAX_AT_ZERO flag is set. This has never been the case so far when the structure is not a 'struct clk_divider'. This is probably why we did not notice this bug before Fixes: afe76c8f ("clk: allow a clk divider with max divisor when zero") Signed-off-by:Jerome Brunet <jbrunet@baylibre.com> Acked-by:
Alexandre Belloni <alexandre.belloni@free-electrons.com> Acked-by:
Sylvain Lemieux <slemieux.tyco@gmail.com> Signed-off-by:
Stephen Boyd <sboyd@codeaurora.org> Signed-off-by:
Sasha Levin <alexander.levin@microsoft.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Showing
- drivers/clk/clk-divider.c 3 additions, 4 deletionsdrivers/clk/clk-divider.c
- drivers/clk/hisilicon/clkdivider-hi6220.c 1 addition, 1 deletiondrivers/clk/hisilicon/clkdivider-hi6220.c
- drivers/clk/nxp/clk-lpc32xx.c 1 addition, 1 deletiondrivers/clk/nxp/clk-lpc32xx.c
- drivers/clk/qcom/clk-regmap-divider.c 1 addition, 1 deletiondrivers/clk/qcom/clk-regmap-divider.c
- drivers/clk/sunxi-ng/ccu_div.c 1 addition, 1 deletiondrivers/clk/sunxi-ng/ccu_div.c
- drivers/gpu/drm/msm/dsi/pll/dsi_pll_14nm.c 1 addition, 1 deletiondrivers/gpu/drm/msm/dsi/pll/dsi_pll_14nm.c
- drivers/rtc/rtc-ac100.c 4 additions, 2 deletionsdrivers/rtc/rtc-ac100.c
- include/linux/clk-provider.h 1 addition, 1 deletioninclude/linux/clk-provider.h
Loading
Please register or sign in to comment