• Florian Fainelli's avatar
    net: dsa: Check return value of phy_connect_direct() · e5a2ba9a
    Florian Fainelli authored
    
    [ Upstream commit 4078b76c ]
    
    We need to check the return value of phy_connect_direct() in
    dsa_slave_phy_connect() otherwise we may be continuing the
    initialization of a slave network device with a PHY that already
    attached somewhere else and which will soon be in error because the PHY
    device is in error.
    
    The conditions for such an error to occur are that we have a port of our
    switch that is not disabled, and has the same port number as a PHY
    address (say both 5) that can be probed using the DSA slave MII bus. We
    end-up having this slave network device find a PHY at the same address
    as our port number, and we try to attach to it.
    
    A slave network (e.g: port 0) has already attached to our PHY device,
    and we try to re-attach it with a different network device, but since we
    ignore the error we would end-up initializating incorrect device
    references by the time the slave network interface is opened.
    
    The code has been (re)organized several times, making it hard to provide
    an exact Fixes tag, this is a bugfix nonetheless.
    Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    e5a2ba9a
slave.c 33 KB