[Qemu-devel] [PATCH] target/xtensa/cpu: Set owner of memory region in xtensa_cpu_initfn

Thomas Huth posted 1 patch 5 years, 9 months ago
Failed in applying to current master (apply log)
Test checkpatch passed
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
target/xtensa/cpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[Qemu-devel] [PATCH] target/xtensa/cpu: Set owner of memory region in xtensa_cpu_initfn
Posted by Thomas Huth 5 years, 9 months ago
The instance_init function of the xtensa CPUs creates a memory region,
but does not set an owner, so the memory region is not destroyed
correctly when the CPU object is removed. This can happen when
introspecting the CPU devices, so introspecting the CPU device will
leave a dangling memory region object in the QOM tree. Make sure to
set the right owner here to fix this issue.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 target/xtensa/cpu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c
index b50c840..590813d 100644
--- a/target/xtensa/cpu.c
+++ b/target/xtensa/cpu.c
@@ -149,7 +149,7 @@ static void xtensa_cpu_initfn(Object *obj)
 #ifndef CONFIG_USER_ONLY
     env->address_space_er = g_malloc(sizeof(*env->address_space_er));
     env->system_er = g_malloc(sizeof(*env->system_er));
-    memory_region_init_io(env->system_er, NULL, NULL, env, "er",
+    memory_region_init_io(env->system_er, obj, NULL, env, "er",
                           UINT64_C(0x100000000));
     address_space_init(env->address_space_er, env->system_er, "ER");
 #endif
-- 
1.8.3.1


Re: [Qemu-devel] [PATCH] target/xtensa/cpu: Set owner of memory region in xtensa_cpu_initfn
Posted by Max Filippov 5 years, 9 months ago
On Thu, Jul 19, 2018 at 6:02 AM, Thomas Huth <thuth@redhat.com> wrote:
> The instance_init function of the xtensa CPUs creates a memory region,
> but does not set an owner, so the memory region is not destroyed
> correctly when the CPU object is removed. This can happen when
> introspecting the CPU devices, so introspecting the CPU device will
> leave a dangling memory region object in the QOM tree. Make sure to
> set the right owner here to fix this issue.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  target/xtensa/cpu.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Acked-by: Max Filippov <jcmvbkbc@gmail.com>

-- 
Thanks.
-- Max

Re: [Qemu-devel] [PATCH] target/xtensa/cpu: Set owner of memory region in xtensa_cpu_initfn
Posted by Peter Maydell 5 years, 8 months ago
On 19 July 2018 at 14:02, Thomas Huth <thuth@redhat.com> wrote:
> The instance_init function of the xtensa CPUs creates a memory region,
> but does not set an owner, so the memory region is not destroyed
> correctly when the CPU object is removed. This can happen when
> introspecting the CPU devices, so introspecting the CPU device will
> leave a dangling memory region object in the QOM tree. Make sure to
> set the right owner here to fix this issue.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  target/xtensa/cpu.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c
> index b50c840..590813d 100644
> --- a/target/xtensa/cpu.c
> +++ b/target/xtensa/cpu.c
> @@ -149,7 +149,7 @@ static void xtensa_cpu_initfn(Object *obj)
>  #ifndef CONFIG_USER_ONLY
>      env->address_space_er = g_malloc(sizeof(*env->address_space_er));
>      env->system_er = g_malloc(sizeof(*env->system_er));
> -    memory_region_init_io(env->system_er, NULL, NULL, env, "er",
> +    memory_region_init_io(env->system_er, obj, NULL, env, "er",
>                            UINT64_C(0x100000000));
>      address_space_init(env->address_space_er, env->system_er, "ER");
>  #endif
> --

Applied to master for rc4, thanks.

-- PMM