Commit 54706d99 authored by roel kluin's avatar roel kluin Committed by David S. Miller

s6gmac: Read buffer overflow

Check whether index is within bounds before testing the element.
In the last iteration i is PHY_MAX_ADDR. the condition
`!(p = pd->mii.bus->phy_map[PHY_MAX_ADDR])' is undefined and may
evaluate to false, which leads to a dereference of this invalid
phy_map in the phy_connect() below.
Signed-off-by: default avatarRoel Kluin <roel.kluin@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 1b994b5a
...@@ -793,7 +793,7 @@ static inline int s6gmac_phy_start(struct net_device *dev) ...@@ -793,7 +793,7 @@ static inline int s6gmac_phy_start(struct net_device *dev)
struct s6gmac *pd = netdev_priv(dev); struct s6gmac *pd = netdev_priv(dev);
int i = 0; int i = 0;
struct phy_device *p = NULL; struct phy_device *p = NULL;
while ((!(p = pd->mii.bus->phy_map[i])) && (i < PHY_MAX_ADDR)) while ((i < PHY_MAX_ADDR) && (!(p = pd->mii.bus->phy_map[i])))
i++; i++;
p = phy_connect(dev, dev_name(&p->dev), &s6gmac_adjust_link, 0, p = phy_connect(dev, dev_name(&p->dev), &s6gmac_adjust_link, 0,
PHY_INTERFACE_MODE_RGMII); PHY_INTERFACE_MODE_RGMII);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment