* [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
* [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 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 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
* 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
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.