* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).