Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 733b736c authored by Arnaud Patard's avatar Arnaud Patard Committed by Francois Romieu
Browse files

r8169: fix infinite loop during hotplug



Bug reported for PCMCIA.

Signed-off-by: default avatarArnaud Patard <apatard@mandriva.com>
Signed-off-by: default avatarFrancois Romieu <romieu@fr.zoreil.com>
parent 73f5e28b
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -2702,6 +2702,7 @@ static void rtl8169_down(struct net_device *dev)
	struct rtl8169_private *tp = netdev_priv(dev);
	void __iomem *ioaddr = tp->mmio_addr;
	unsigned int poll_locked = 0;
	unsigned int intrmask;

	rtl8169_delete_timer(dev);

@@ -2740,8 +2741,11 @@ core_down:
	 * 2) dev->change_mtu
	 *    -> rtl8169_poll can not be issued again and re-enable the
	 *       interruptions. Let's simply issue the IRQ down sequence again.
	 *
	 * No loop if hotpluged or major error (0xffff).
	 */
	if (RTL_R16(IntrMask))
	intrmask = RTL_R16(IntrMask);
	if (intrmask && (intrmask != 0xffff))
		goto core_down;

	rtl8169_tx_clear(tp);