]> git.baikalelectronics.ru Git - kernel.git/commit
[NET]: Fix possible dev_deactivate race condition
authorHerbert Xu <herbert@gondor.apana.org.au>
Fri, 19 Oct 2007 05:37:58 +0000 (22:37 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 19 Oct 2007 05:37:58 +0000 (22:37 -0700)
commit31196a4044cf928d32bd407807bdbeaf27ee84ea
tree3f3a4a48210a1e4208a8ed5507f2e3269a7b79da
parentf3000dae856993dd9ed366e2cfd4f8d4e4183db3
[NET]: Fix possible dev_deactivate race condition

The function dev_deactivate is supposed to only return when
all outstanding transmissions have completed.  Unfortunately
it is possible for store operations in the driver's transmit
function to only become visible after dev_deactivate returns.

This patch fixes this by taking the queue lock after we see
the end of the queue run.  This ensures that all effects of
any previous transmit calls are visible.

If however we detect that there is another queue run occuring,
then we'll warn about it because this should never happen as
we have pointed dev->qdisc to noop_qdisc within the same queue
lock earlier in the functino.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_generic.c