OSDN Git Service

net: mdio: ensure the type of mdio devices match mdio drivers
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Thu, 7 Oct 2021 13:23:27 +0000 (14:23 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 8 Oct 2021 14:20:45 +0000 (15:20 +0100)
commit94114d90037fe730bab5ea76d388bc294034fa39
treebcbc5a7c65433823d058cd6f890c486beec566aa
parent454d3e1ae057a1e09a15905b06b860f60d6c14d0
net: mdio: ensure the type of mdio devices match mdio drivers

On the MDIO bus, we have PHYLIB devices and drivers, and we have non-
PHYLIB devices and drivers. PHYLIB devices are MDIO devices that are
wrapped with a struct phy_device.

Trying to bind a MDIO device with a PHYLIB driver results in out-of-
bounds accesses as we attempt to access struct phy_device members. So,
let's prevent this by ensuring that the type of the MDIO device
(indicated by the MDIO_DEVICE_FLAG_PHY flag) matches the type of the
MDIO driver (indicated by the MDIO_DEVICE_IS_PHY flag.)

Link: https://lore.kernel.org/r/2b1dc053-8c9a-e3e4-b450-eecdfca3fe16@gmail.com
Tested-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/mdio_bus.c