• V
    net: dsa: mt7530: fix kernel bug in mdiobus_free() when unbinding · 9ffe3d09
    Vladimir Oltean 提交于
    Nobody in this driver calls mdiobus_unregister(), which is necessary if
    mdiobus_register() completes successfully. So if the devres callbacks
    that free the mdiobus get invoked (this is the case when unbinding the
    driver), mdiobus_free() will BUG if the mdiobus is still registered,
    which it is.
    
    My speculation is that this is due to the fact that prior to commit
    ac3a68d5 ("net: phy: don't abuse devres in devm_mdiobus_register()")
    from June 2020, _devm_mdiobus_free() used to call mdiobus_unregister().
    But at the time that the mt7530 support was introduced in May 2021, the
    API was already changed. It's therefore likely that the blamed patch was
    developed on an older tree, and incorrectly adapted to net-next. This
    makes the Fixes: tag correct.
    
    Fix the problem by using the devres variant of mdiobus_register.
    
    Fixes: ba751e28 ("net: dsa: mt7530: add interrupt support")
    Signed-off-by: NVladimir Oltean <vladimir.oltean@nxp.com>
    Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: NJakub Kicinski <kuba@kernel.org>
    9ffe3d09
mt7530.c 83.4 KB