Re: possibly bug in 8139cp? (WAS Re: BUG: 2.4.23-pre3 + ifconfig)

From: Andrew Morton
Date: Mon Sep 08 2003 - 19:27:50 EST


Jeff Garzik <jgarzik@xxxxxxxxx> wrote:
>
> Andrew Morton wrote:
> > diff -puN include/linux/netdevice.h~ifdown-lockup-fix include/linux/netdevice.h
> > --- 25/include/linux/netdevice.h~ifdown-lockup-fix Mon Sep 8 13:20:28 2003
> > +++ 25-akpm/include/linux/netdevice.h Mon Sep 8 13:20:34 2003
> > @@ -854,7 +854,7 @@ static inline void netif_rx_complete(str
> >
> > static inline void netif_poll_disable(struct net_device *dev)
> > {
> > - while (test_and_set_bit(__LINK_STATE_RX_SCHED, &dev->state)) {
> > + while (test_bit(__LINK_STATE_RX_SCHED, &dev->state)) {
> > /* No hurry. */
> > current->state = TASK_INTERRUPTIBLE;
> > schedule_timeout(1);
> >
>
>
> no that breaks other things.
>

The only thing it can break is tg3, which appears to be placing a competing
interpretation upon the handling of this flag.

Given that tg3_netif_stop() will set __LINK_STATE_RX_SCHED and dev_close()
will then loop on it getting cleared again there appears to be a risk that
a dev_close() against tg3 will lock up.

It's all very unclear. And uncommented, but that is experientially the
same thing :(

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/