* [PATCH 0/2] x86: fix memory leaks
@ 2016-04-29 14:41 Jan Beulich
2016-04-29 14:49 ` [PATCH 1/2] x86/p2m: clean up altp2m Jan Beulich
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Jan Beulich @ 2016-04-29 14:41 UTC (permalink / raw)
To: xen-devel; +Cc: George Dunlap, Andrew Cooper, Wei Liu
1: p2m: clean up altp2m
2: fix domain cleanup
Signed-off-by: Jan Beulich <jbeulich@suse.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH 1/2] x86/p2m: clean up altp2m 2016-04-29 14:41 [PATCH 0/2] x86: fix memory leaks Jan Beulich @ 2016-04-29 14:49 ` Jan Beulich 2016-04-29 14:53 ` Andrew Cooper 2016-05-03 16:44 ` George Dunlap 2016-04-29 14:49 ` [PATCH 2/2] x86: fix domain cleanup Jan Beulich 2016-04-29 15:36 ` [PATCH 0/2] x86: fix memory leaks Wei Liu 2 siblings, 2 replies; 9+ messages in thread From: Jan Beulich @ 2016-04-29 14:49 UTC (permalink / raw) To: xen-devel; +Cc: George Dunlap, Andrew Cooper, Wei Liu [-- Attachment #1: Type: text/plain, Size: 522 bytes --] Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/mm/p2m.c +++ b/xen/arch/x86/mm/p2m.c @@ -618,9 +618,11 @@ void p2m_teardown(struct p2m_domain *p2m void p2m_final_teardown(struct domain *d) { - /* We must teardown unconditionally because + /* + * We must teardown both of them unconditionally because * we initialise them unconditionally. */ + p2m_teardown_altp2m(d); p2m_teardown_nestedp2m(d); /* Iterate over all p2m tables per domain */ [-- Attachment #2: x86-altp2m-teardown.patch --] [-- Type: text/plain, Size: 544 bytes --] x86/p2m: clean up altp2m Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/mm/p2m.c +++ b/xen/arch/x86/mm/p2m.c @@ -618,9 +618,11 @@ void p2m_teardown(struct p2m_domain *p2m void p2m_final_teardown(struct domain *d) { - /* We must teardown unconditionally because + /* + * We must teardown both of them unconditionally because * we initialise them unconditionally. */ + p2m_teardown_altp2m(d); p2m_teardown_nestedp2m(d); /* Iterate over all p2m tables per domain */ [-- Attachment #3: Type: text/plain, Size: 126 bytes --] _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] x86/p2m: clean up altp2m 2016-04-29 14:49 ` [PATCH 1/2] x86/p2m: clean up altp2m Jan Beulich @ 2016-04-29 14:53 ` Andrew Cooper 2016-05-03 16:44 ` George Dunlap 1 sibling, 0 replies; 9+ messages in thread From: Andrew Cooper @ 2016-04-29 14:53 UTC (permalink / raw) To: Jan Beulich, xen-devel; +Cc: George Dunlap, Wei Liu On 29/04/16 15:49, Jan Beulich wrote: > Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] x86/p2m: clean up altp2m 2016-04-29 14:49 ` [PATCH 1/2] x86/p2m: clean up altp2m Jan Beulich 2016-04-29 14:53 ` Andrew Cooper @ 2016-05-03 16:44 ` George Dunlap 2016-05-03 16:45 ` George Dunlap 1 sibling, 1 reply; 9+ messages in thread From: George Dunlap @ 2016-05-03 16:44 UTC (permalink / raw) To: Jan Beulich; +Cc: xen-devel, Wei Liu, Andrew Cooper On Fri, Apr 29, 2016 at 3:49 PM, Jan Beulich <JBeulich@suse.com> wrote: > Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: George Dunlap <george.dunlap@citrix.com> > > --- a/xen/arch/x86/mm/p2m.c > +++ b/xen/arch/x86/mm/p2m.c > @@ -618,9 +618,11 @@ void p2m_teardown(struct p2m_domain *p2m > > void p2m_final_teardown(struct domain *d) > { > - /* We must teardown unconditionally because > + /* > + * We must teardown both of them unconditionally because > * we initialise them unconditionally. > */ > + p2m_teardown_altp2m(d); > p2m_teardown_nestedp2m(d); > > /* Iterate over all p2m tables per domain */ > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel > _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] x86/p2m: clean up altp2m 2016-05-03 16:44 ` George Dunlap @ 2016-05-03 16:45 ` George Dunlap 2016-05-04 7:25 ` Jan Beulich 0 siblings, 1 reply; 9+ messages in thread From: George Dunlap @ 2016-05-03 16:45 UTC (permalink / raw) To: Jan Beulich; +Cc: xen-devel, Wei Liu, Andrew Cooper On Tue, May 3, 2016 at 5:44 PM, George Dunlap <George.Dunlap@eu.citrix.com> wrote: > On Fri, Apr 29, 2016 at 3:49 PM, Jan Beulich <JBeulich@suse.com> wrote: >> Signed-off-by: Jan Beulich <jbeulich@suse.com> > > Acked-by: George Dunlap <george.dunlap@citrix.com> And I guess this is a candidate for backport to 4.6 too? -George _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] x86/p2m: clean up altp2m 2016-05-03 16:45 ` George Dunlap @ 2016-05-04 7:25 ` Jan Beulich 0 siblings, 0 replies; 9+ messages in thread From: Jan Beulich @ 2016-05-04 7:25 UTC (permalink / raw) To: George Dunlap; +Cc: Andrew Cooper, Wei Liu, xen-devel >>> On 03.05.16 at 18:45, <George.Dunlap@eu.citrix.com> wrote: > On Tue, May 3, 2016 at 5:44 PM, George Dunlap > <George.Dunlap@eu.citrix.com> wrote: >> On Fri, Apr 29, 2016 at 3:49 PM, Jan Beulich <JBeulich@suse.com> wrote: >>> Signed-off-by: Jan Beulich <jbeulich@suse.com> >> >> Acked-by: George Dunlap <george.dunlap@citrix.com> > > And I guess this is a candidate for backport to 4.6 too? Definitely (and I have it in my queue already). Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/2] x86: fix domain cleanup 2016-04-29 14:41 [PATCH 0/2] x86: fix memory leaks Jan Beulich 2016-04-29 14:49 ` [PATCH 1/2] x86/p2m: clean up altp2m Jan Beulich @ 2016-04-29 14:49 ` Jan Beulich 2016-04-29 15:34 ` Andrew Cooper 2016-04-29 15:36 ` [PATCH 0/2] x86: fix memory leaks Wei Liu 2 siblings, 1 reply; 9+ messages in thread From: Jan Beulich @ 2016-04-29 14:49 UTC (permalink / raw) To: xen-devel; +Cc: George Dunlap, Andrew Cooper, Wei Liu [-- Attachment #1: Type: text/plain, Size: 2054 bytes --] Free d->arch.cpuids on both the creation error path and during destruction. Don't bypass iommu_domain_destroy(). Move psr_domain_init() up so that hvm_domain_initialise() again is the last thing which can fail, and hence doesn't require undoing later on. Move psr_domain_free() up on the creation error path, so that cleanup once again gets done in reverse order of setup. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -642,21 +642,18 @@ int arch_domain_create(struct domain *d, } spin_lock_init(&d->arch.e820_lock); + if ( (rc = psr_domain_init(d)) != 0 ) + goto fail; + if ( has_hvm_container_domain(d) ) { if ( (rc = hvm_domain_initialise(d)) != 0 ) - { - iommu_domain_destroy(d); goto fail; - } } else /* 64-bit PV guest by default. */ d->arch.is_32bit_pv = d->arch.has_32bit_shinfo = 0; - if ( (rc = psr_domain_init(d)) != 0 ) - goto fail; - /* initialize default tsc behavior in case tools don't */ tsc_set_info(d, TSC_MODE_DEFAULT, 0UL, 0, 0); spin_lock_init(&d->arch.vtsc_lock); @@ -674,8 +671,11 @@ int arch_domain_create(struct domain *d, fail: d->is_dying = DOMDYING_dead; + psr_domain_free(d); + iommu_domain_destroy(d); cleanup_domain_irq_mapping(d); free_xenheap_page(d->shared_info); + xfree(d->arch.cpuids); if ( paging_initialised ) paging_final_teardown(d); free_perdomain_mappings(d); @@ -684,7 +684,6 @@ int arch_domain_create(struct domain *d, xfree(d->arch.pv_domain.cpuidmasks); free_xenheap_page(d->arch.pv_domain.gdt_ldt_l1tab); } - psr_domain_free(d); return rc; } @@ -694,6 +693,7 @@ void arch_domain_destroy(struct domain * hvm_domain_destroy(d); xfree(d->arch.e820); + xfree(d->arch.cpuids); free_domain_pirqs(d); if ( !is_idle_domain(d) ) [-- Attachment #2: x86-free-cpuids.patch --] [-- Type: text/plain, Size: 2075 bytes --] x86: fix domain cleanup Free d->arch.cpuids on both the creation error path and during destruction. Don't bypass iommu_domain_destroy(). Move psr_domain_init() up so that hvm_domain_initialise() again is the last thing which can fail, and hence doesn't require undoing later on. Move psr_domain_free() up on the creation error path, so that cleanup once again gets done in reverse order of setup. Signed-off-by: Jan Beulich <jbeulich@suse.com> --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -642,21 +642,18 @@ int arch_domain_create(struct domain *d, } spin_lock_init(&d->arch.e820_lock); + if ( (rc = psr_domain_init(d)) != 0 ) + goto fail; + if ( has_hvm_container_domain(d) ) { if ( (rc = hvm_domain_initialise(d)) != 0 ) - { - iommu_domain_destroy(d); goto fail; - } } else /* 64-bit PV guest by default. */ d->arch.is_32bit_pv = d->arch.has_32bit_shinfo = 0; - if ( (rc = psr_domain_init(d)) != 0 ) - goto fail; - /* initialize default tsc behavior in case tools don't */ tsc_set_info(d, TSC_MODE_DEFAULT, 0UL, 0, 0); spin_lock_init(&d->arch.vtsc_lock); @@ -674,8 +671,11 @@ int arch_domain_create(struct domain *d, fail: d->is_dying = DOMDYING_dead; + psr_domain_free(d); + iommu_domain_destroy(d); cleanup_domain_irq_mapping(d); free_xenheap_page(d->shared_info); + xfree(d->arch.cpuids); if ( paging_initialised ) paging_final_teardown(d); free_perdomain_mappings(d); @@ -684,7 +684,6 @@ int arch_domain_create(struct domain *d, xfree(d->arch.pv_domain.cpuidmasks); free_xenheap_page(d->arch.pv_domain.gdt_ldt_l1tab); } - psr_domain_free(d); return rc; } @@ -694,6 +693,7 @@ void arch_domain_destroy(struct domain * hvm_domain_destroy(d); xfree(d->arch.e820); + xfree(d->arch.cpuids); free_domain_pirqs(d); if ( !is_idle_domain(d) ) [-- Attachment #3: Type: text/plain, Size: 126 bytes --] _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] x86: fix domain cleanup 2016-04-29 14:49 ` [PATCH 2/2] x86: fix domain cleanup Jan Beulich @ 2016-04-29 15:34 ` Andrew Cooper 0 siblings, 0 replies; 9+ messages in thread From: Andrew Cooper @ 2016-04-29 15:34 UTC (permalink / raw) To: Jan Beulich, xen-devel; +Cc: George Dunlap, Wei Liu On 29/04/16 15:49, Jan Beulich wrote: > Free d->arch.cpuids on both the creation error path and during > destruction. > > Don't bypass iommu_domain_destroy(). > > Move psr_domain_init() up so that hvm_domain_initialise() again is the > last thing which can fail, and hence doesn't require undoing later on. > > Move psr_domain_free() up on the creation error path, so that cleanup > once again gets done in reverse order of setup. > > Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/2] x86: fix memory leaks 2016-04-29 14:41 [PATCH 0/2] x86: fix memory leaks Jan Beulich 2016-04-29 14:49 ` [PATCH 1/2] x86/p2m: clean up altp2m Jan Beulich 2016-04-29 14:49 ` [PATCH 2/2] x86: fix domain cleanup Jan Beulich @ 2016-04-29 15:36 ` Wei Liu 2 siblings, 0 replies; 9+ messages in thread From: Wei Liu @ 2016-04-29 15:36 UTC (permalink / raw) To: Jan Beulich; +Cc: George Dunlap, xen-devel, Wei Liu, Andrew Cooper On Fri, Apr 29, 2016 at 08:41:14AM -0600, Jan Beulich wrote: > 1: p2m: clean up altp2m > 2: fix domain cleanup > > Signed-off-by: Jan Beulich <jbeulich@suse.com> > Release-acked-by: Wei Liu <wei.liu2@citrix.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2016-05-04 7:25 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-04-29 14:41 [PATCH 0/2] x86: fix memory leaks Jan Beulich 2016-04-29 14:49 ` [PATCH 1/2] x86/p2m: clean up altp2m Jan Beulich 2016-04-29 14:53 ` Andrew Cooper 2016-05-03 16:44 ` George Dunlap 2016-05-03 16:45 ` George Dunlap 2016-05-04 7:25 ` Jan Beulich 2016-04-29 14:49 ` [PATCH 2/2] x86: fix domain cleanup Jan Beulich 2016-04-29 15:34 ` Andrew Cooper 2016-04-29 15:36 ` [PATCH 0/2] x86: fix memory leaks Wei Liu
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.