Several drivers currently use of_find_compatible_node() to lookup child nodes while failing to notice that the of_find_ functions search the entire tree depth-first (from a given start node) and therefore can match unrelated nodes. The fact that these functions also drop a reference to the node they start searching from (e.g. the parent node) is typically also overlooked, something which can lead to use-after-free bugs (e.g. after probe deferrals). This series adds a new helper, similar to of_get_child_by_name(), that can be used to lookup compatible child nodes, and uses the new helper to fix child-node lookups throughout the tree. This is related to the fixes I posted about a year ago, which addressed a similar anti-pattern when looking up child nodes by name. Since it took me more than a year to get all those fixes into Linus' tree (one fix is still pending), and as these fixes depend on the new helper, I'm suggesting that these all go in through Rob's or Greg's trees. Alternatively, the helper could go into to -rc2, and I'll be pinging submaintainers for the coming year as well. ;) Johan Changes in v2 - fix !CONFIG_OF build by adding missing inline keyword - amend commit messages and explicitly mention that the of_find functions search the entire tree from a given start node - add Sebastian's and Martin's Reviewed-by and Acked-by to patches 4/9 and 9/9 respectively - drop or fix a couple of CC addresses that bounced Johan Hovold (9): of: add helper to lookup compatible child node drm/mediatek: fix OF sibling-node lookup drm/msm: fix OF child-node lookup mmc: meson-mx-sdio: fix OF child-node lookup mtd: nand: atmel: fix OF child-node lookup net: bcmgenet: fix OF child-node lookup net: stmmac: dwmac-sun8i: fix OF child-node lookup NFC: nfcmrvl_uart: fix OF child-node lookup power: supply: twl4030-charger: fix OF sibling-node lookup drivers/gpu/drm/mediatek/mtk_hdmi.c | 5 ++-- drivers/gpu/drm/msm/adreno/adreno_gpu.c | 5 ++-- drivers/mmc/host/meson-mx-sdio.c | 8 ++++-- drivers/mtd/nand/raw/atmel/nand-controller.c | 11 +++++--- drivers/net/ethernet/broadcom/genet/bcmmii.c | 2 +- .../net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 12 +++++++-- drivers/nfc/nfcmrvl/uart.c | 5 ++-- drivers/of/base.c | 25 +++++++++++++++++++ drivers/power/supply/twl4030_charger.c | 5 ++-- include/linux/of.h | 8 ++++++ 10 files changed, 68 insertions(+), 18 deletions(-) -- 2.18.0