From mboxrd@z Thu Jan 1 00:00:00 1970 From: Igor Mammedov Subject: Re: [Xen HV PATCH] VT-d: Fix resource leaks on error paths Date: Thu, 12 May 2011 10:26:30 +0200 Message-ID: <4DCB99B6.3000509@redhat.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Keir Fraser Cc: xen-devel@lists.xensource.com, "Kay, Allen M" List-Id: xen-devel@lists.xenproject.org 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" 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@lists.xensource.com >> http://lists.xensource.com/xen-devel >