diff options
author | David Woodhouse <dwmw2@infradead.org> | 2012-04-08 14:01:44 +0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-04-13 21:06:47 +0400 |
commit | 9a5d2bd99e0dfe9a31b3c160073ac445ba3d773f (patch) | |
tree | e91d28ce1852c8a7016065ee2184dd2531d56892 /drivers/vhost | |
parent | 1716a96101c49186bb0b8491922fd3e69030235f (diff) | |
download | linux-9a5d2bd99e0dfe9a31b3c160073ac445ba3d773f.tar.xz |
ppp: Fix race condition with queue start/stop
Commit e675f0cc9a872fd152edc0c77acfed19bf28b81e ("ppp: Don't stop and
restart queue on every TX packet") introduced a race condition which
could leave the net queue stopped even when the channel is no longer
busy. By calling netif_stop_queue() from ppp_start_xmit(), based on the
return value from ppp_xmit_process() but *after* all the locks have been
dropped, we could potentially do so *after* the channel has actually
finished transmitting and attempted to re-wake the queue.
Fix this by moving the netif_stop_queue() into ppp_xmit_process() under
the xmit lock. I hadn't done this previously, because it gets called
from other places than ppp_start_xmit(). But I now think it's the better
option. The net queue *should* be stopped if the channel becomes
congested due to writes from pppd, anyway.
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/vhost')
0 files changed, 0 insertions, 0 deletions