--- drivers/net/ethernet/sis/sis190.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) --- linux/drivers/net/ethernet/sis/sis190.c.net-sis190-fix-list-usage.orig +++ linux/drivers/net/ethernet/sis/sis190.c @@ -1252,6 +1252,7 @@ static u16 sis190_default_phy(struct net struct sis190_private *tp = netdev_priv(dev); struct mii_if_info *mii_if = &tp->mii_if; void __iomem *ioaddr = tp->mmio_addr; + struct list_head *l; u16 status; phy_home = phy_default = phy_lan = NULL; @@ -1280,9 +1281,12 @@ static u16 sis190_default_phy(struct net phy_default = phy_home; else if (phy_lan) phy_default = phy_lan; - else - phy_default = list_first_entry(&tp->first_phy, - struct sis190_phy, list); + else { + l = &tp->first_phy; + l = l->next; + phy_default = list_first_entry(l, struct sis190_phy, list); + + } } if (mii_if->phy_id != phy_default->phy_id) {