WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [Xen HV PATCH] VT-d: Fix resource leaks on error paths

To: Keir Fraser <keir@xxxxxxx>
Subject: Re: [Xen-devel] [Xen HV PATCH] VT-d: Fix resource leaks on error paths
From: Igor Mammedov <imammedo@xxxxxxxxxx>
Date: Thu, 12 May 2011 10:26:30 +0200
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx, "Kay, Allen M" <allen.m.kay@xxxxxxxxx>
Delivery-date: Thu, 12 May 2011 02:06:57 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <C9F154C8.2D2C5%keir@xxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <C9F154C8.2D2C5%keir@xxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110419 Red Hat/3.1.10-1.el6_0 Lightning/1.0b2 Thunderbird/3.1.10
Thanks Keir,

I'll repost patch and  cc Allen

 On 05/12/2011 10:11 AM, Keir Fraser wrote:
Will need an Ack from a VT-d maintainer (Allen Kay is listed in our
MAINTAINERS file, and is CC'ed). Also needs a Signed-off-by line.

  -- Keir

On 11/05/2011 12:45, "Igor Mammedov"<imammedo@xxxxxxxxxx>  wrote:

       On error exit from function, maped pages should be unmapped
       and acquired locks released.

diff -r 4b0692880dfa -r da93d9e43b3c xen/drivers/passthrough/vtd/intremap.c
--- a/xen/drivers/passthrough/vtd/intremap.c Thu May 05 17:40:34 2011 +0100
+++ b/xen/drivers/passthrough/vtd/intremap.c Wed May 11 12:29:54 2011 +0200
@@ -210,7 +210,8 @@
      if ( iremap_entries )
          unmap_vtd_domain_page(iremap_entries);

-    ir_ctrl->iremap_num++;
+    if ( i<  IREMAP_ENTRY_NR )
+     ir_ctrl->iremap_num++;
      return i;
  }

@@ -246,6 +247,8 @@
          dprintk(XENLOG_ERR VTDPREFIX,
                  "%s: index (%d) get an empty entry!\n",
                  __func__, index);
+ unmap_vtd_domain_page(iremap_entries);
+ spin_unlock_irqrestore(&ir_ctrl->iremap_lock, flags);
          return -EFAULT;
      }

@@ -281,7 +284,8 @@
      if ( index<  0 )
      {
          index = alloc_remap_entry(iommu);
-        apic_pin_2_ir_idx[apic][ioapic_pin] = index;
+        if ( index<  IREMAP_ENTRY_NR )
+            apic_pin_2_ir_idx[apic][ioapic_pin] = index;
      }

      if ( index>  IREMAP_ENTRY_NR - 1 )
@@ -546,6 +550,8 @@
          dprintk(XENLOG_ERR VTDPREFIX,
                  "%s: index (%d) get an empty entry!\n",
                  __func__, index);
+ unmap_vtd_domain_page(iremap_entries);
+ spin_unlock_irqrestore(&ir_ctrl->iremap_lock, flags);
          return -EFAULT;
      }


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel