From patchwork Sun Jul 26 12:48:01 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Michael S. Tsirkin" X-Patchwork-Id: 37422 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n6QCnB4B015058 for ; Sun, 26 Jul 2009 12:49:11 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753429AbZGZMtI (ORCPT ); Sun, 26 Jul 2009 08:49:08 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753428AbZGZMtI (ORCPT ); Sun, 26 Jul 2009 08:49:08 -0400 Received: from mx2.redhat.com ([66.187.237.31]:39381 "EHLO mx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753422AbZGZMtH (ORCPT ); Sun, 26 Jul 2009 08:49:07 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n6QCn1AH028832; Sun, 26 Jul 2009 08:49:01 -0400 Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199]) by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n6QCmx4x004642; Sun, 26 Jul 2009 08:49:00 -0400 Received: from redhat.com (vpn-6-213.tlv.redhat.com [10.35.6.213]) by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n6QCmuAa003698; Sun, 26 Jul 2009 08:48:57 -0400 Date: Sun, 26 Jul 2009 15:48:01 +0300 From: "Michael S. Tsirkin" To: Christian Borntraeger , virtualization@lists.linux-foundation.org, Anthony Liguori , kvm@vger.kernel.org, avi@redhat.com, Carsten Otte , Rusty Russell , amit.shah@redhat.com Subject: [PATCHv3 1/2] virtio: delete vq from list Message-ID: <20090726124801.GB20740@redhat.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.19 (2009-01-05) X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org This makes delete vq the reverse of find vq. This is required to make it possible to retry find_vqs after a failure, otherwise the list gets corrupted. Signed-off-by: Michael S. Tsirkin --- drivers/virtio/virtio_pci.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c index 7e21389..2eaf1fb 100644 --- a/drivers/virtio/virtio_pci.c +++ b/drivers/virtio/virtio_pci.c @@ -464,7 +464,11 @@ static void vp_del_vq(struct virtqueue *vq) { struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev); struct virtio_pci_vq_info *info = vq->priv; - unsigned long size; + unsigned long flags, size; + + spin_lock_irqsave(&vp_dev->lock, flags); + list_del(&info->node); + spin_unlock_irqrestore(&vp_dev->lock, flags); iowrite16(info->queue_index, vp_dev->ioaddr + VIRTIO_PCI_QUEUE_SEL);