virtio-net: refill only when device is up during setting queues
authorJason Wang <jasowang@redhat.com>
Tue, 15 Oct 2013 03:18:59 +0000 (11:18 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 4 Nov 2013 12:31:03 +0000 (04:31 -0800)
commit30983d3c66572348f078fe2e2d55638d73c3e486
tree2445123c37de70924273083fc1d4e4c81c56a5c0
parent413054e740f1efb2cb765323bc73ad01f986c4e1
virtio-net: refill only when device is up during setting queues

[ Upstream commit 35ed159bfd96a7547ec277ed8b550c7cbd9841b6 ]

We used to schedule the refill work unconditionally after changing the
number of queues. This may lead an issue if the device is not
up. Since we only try to cancel the work in ndo_stop(), this may cause
the refill work still work after removing the device. Fix this by only
schedule the work when device is up.

The bug were introduce by commit 9b9cd8024a2882e896c65222aa421d461354e3f2.
(virtio-net: fix the race between channels setting and refill)

Signed-off-by: Jason Wang <jasowang@redhat.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/virtio_net.c