Use the new of_get_compatible_child() helper to lookup the mdio child node instead of using of_find_compatible_node(), which searches the entire tree from a given start node and thus can return an unrelated (i.e. non-child) node.
This also addresses a potential use-after-free (e.g. after probe deferral) as the tree-wide helper drops a reference to its first argument (i.e. the node of the device being probed).
Fixes: aa09677cba42 ("net: bcmgenet: add MDIO routines") Cc: stable stable@vger.kernel.org # 3.15 Cc: Florian Fainelli f.fainelli@gmail.com Cc: David S. Miller davem@davemloft.net Signed-off-by: Johan Hovold johan@kernel.org --- drivers/net/ethernet/broadcom/genet/bcmmii.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c index 5333274a283c..87fc65560ceb 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c @@ -333,7 +333,7 @@ static struct device_node *bcmgenet_mii_of_find_mdio(struct bcmgenet_priv *priv) if (!compat) return NULL;
- priv->mdio_dn = of_find_compatible_node(dn, NULL, compat); + priv->mdio_dn = of_get_compatible_child(dn, compat); kfree(compat); if (!priv->mdio_dn) { dev_err(kdev, "unable to find MDIO bus node\n");
On 08/27/2018 01:21 AM, Johan Hovold wrote:
Use the new of_get_compatible_child() helper to lookup the mdio child node instead of using of_find_compatible_node(), which searches the entire tree from a given start node and thus can return an unrelated (i.e. non-child) node.
This also addresses a potential use-after-free (e.g. after probe deferral) as the tree-wide helper drops a reference to its first argument (i.e. the node of the device being probed).
Fixes: aa09677cba42 ("net: bcmgenet: add MDIO routines") Cc: stable stable@vger.kernel.org # 3.15 Cc: Florian Fainelli f.fainelli@gmail.com Cc: David S. Miller davem@davemloft.net Signed-off-by: Johan Hovold johan@kernel.org
Reviewed-by: Florian Fainelli f.fainelli@gmail.com
On Thu, Aug 30, 2018 at 05:47:33PM -0700, Florian Fainelli wrote:
On 08/27/2018 01:21 AM, Johan Hovold wrote:
Use the new of_get_compatible_child() helper to lookup the mdio child node instead of using of_find_compatible_node(), which searches the entire tree from a given start node and thus can return an unrelated (i.e. non-child) node.
This also addresses a potential use-after-free (e.g. after probe deferral) as the tree-wide helper drops a reference to its first argument (i.e. the node of the device being probed).
Fixes: aa09677cba42 ("net: bcmgenet: add MDIO routines") Cc: stable stable@vger.kernel.org # 3.15 Cc: Florian Fainelli f.fainelli@gmail.com Cc: David S. Miller davem@davemloft.net Signed-off-by: Johan Hovold johan@kernel.org
Reviewed-by: Florian Fainelli f.fainelli@gmail.com
Thanks for reviewing.
Rob's gotten the helper into -rc2:
36156f9241cb of: add helper to lookup compatible child node
so feel free to pick this one up directly to whichever net tree you prefer. I've been able to trigger crashes after probe deferrals due to the use-after-free, but this seems unlikely to be exploitable.
Thanks, Johan
linux-stable-mirror@lists.linaro.org