• Johan Hovold's avatar
    ASoC: mt8173-rt5650: fix child-node lookup · 3a0a7b26
    Johan Hovold authored
    This driver used the wrong OF-helper when looking up the optional
    capture-codec child node during probe. Instead of searching just
    children of the sound node, a tree-wide depth-first search starting at
    the unrelated platform node was done. Not only could this end up
    matching an unrelated node or no node at all; the platform node could
    also be prematurely freed since of_find_node_by_name() drops a reference
    to its first argument. This particular pattern has been observed leading
    to crashes after probe deferrals in other drivers.
    
    Fix this by dropping the broken call to of_find_node_by_name() and
    keeping only the second, correct lookup using of_get_child_by_name()
    while taking care not to bail out if the optional node is missing.
    
    Note that this also addresses two capture-codec node-reference leaks
    (one for each of the original helper calls).
    
    Compile tested only.
    
    Fixes: d349caeb ("ASoC: mediatek: Add second I2S on mt8173-rt5650 machine driver")
    Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    3a0a7b26
mt8173-rt5650.c 9.08 KB