From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dor Laor Subject: [PATCH] Check device status in tx timer Date: Tue, 04 Mar 2008 17:33:26 +0200 Message-ID: <1204644806.19089.44.camel@localhost.localdomain> Reply-To: dor.laor@qumranet.com Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: kvm-devel , Anthony Liguori Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces@lists.sourceforge.net Errors-To: kvm-devel-bounces@lists.sourceforge.net List-Id: kvm.vger.kernel.org repository: /home/dor/src/merge/kvm branch: trunk commit acdb6d2aa7332179eead306ead17494ae23edbd6 Author: Dor Laor Date: Tue Mar 4 08:16:06 2008 -0500 Check device status in tx timer. The device can be down when the timer pops. If it is down it will cause segfault. It might happen on migration but also on regular operation when the device sends packets and quickly goes down before the host timer pops. Signed-off-by: Dor Laor diff --git a/qemu/hw/virtio-net.c b/qemu/hw/virtio-net.c index 612cf6b..a05eafb 100644 --- a/qemu/hw/virtio-net.c +++ b/qemu/hw/virtio-net.c @@ -280,6 +280,10 @@ static void virtio_net_tx_timer(void *opaque) { VirtIONet *n = opaque; + /* Just in case the driver is not ready on more */ + if (!(n->vdev.status & VIRTIO_CONFIG_S_DRIVER_OK)) + return; + n->tx_vq->vring.used->flags &= ~VRING_USED_F_NO_NOTIFY; n->tx_timer_active = 0; virtio_net_flush_tx(n, n->tx_vq); ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/