• Uwe Kleine-König's avatar
    of: restore old handling of cells_name=NULL in of_*_phandle_with_args() · 59e9fcf8
    Uwe Kleine-König authored
    Before commit e42ee610 ("of: Let of_for_each_phandle fallback to
    non-negative cell_count") the iterator functions calling
    of_for_each_phandle assumed a cell count of 0 if cells_name was NULL.
    This corner case was missed when implementing the fallback logic in
    e42ee610 and resulted in an endless loop.
    
    Restore the old behaviour of of_count_phandle_with_args() and
    of_parse_phandle_with_args() and add a check to
    of_phandle_iterator_init() to prevent a similar failure as a safety
    precaution. of_parse_phandle_with_args_map() doesn't need a similar fix
    as cells_name isn't NULL there.
    
    Affected drivers are:
     - drivers/base/power/domain.c
     - drivers/base/power/domain.c
     - drivers/clk/ti/clk-dra7-atl.c
     - drivers/hwmon/ibmpowernv.c
     - drivers/i2c/muxes/i2c-demux-pinctrl.c
     - drivers/iommu/mtk_iommu.c
     - drivers/net/ethernet/freescale/fman/mac.c
     - drivers/opp/of.c
     - drivers/perf/arm_dsu_pmu.c
     - drivers/regulator/of_regulator.c
     - drivers/remoteproc/imx_rproc.c
     - drivers/soc/rockchip/pm_domains.c
     - sound/soc/fsl/imx-audmix.c
     - sound/soc/fsl/imx-audmix.c
     - sound/soc/meson/axg-card.c
     - sound/soc/samsung/tm2_wm5110.c
     - sound/soc/samsung/tm2_wm5110.c
    
    Thanks to Geert Uytterhoeven for reporting the issue, Peter Rosin for
    helping pinpoint the actual problem and the testers for confirming this
    fix.
    
    Fixes: e42ee610 ("of: Let of_for_each_phandle fallback to non-negative cell_count")
    Tested-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
    Tested-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Signed-off-by: default avatarRob Herring <robh@kernel.org>
    59e9fcf8
base.c 59.7 KB