Patchwork [03/22] target-i386: if x86_cpu_realize() failed report error and do cleanup

login
register
mail settings
Submitter Igor Mammedov
Date Sept. 7, 2012, 8:54 p.m.
Message ID <1347051311-16122-4-git-send-email-imammedo@redhat.com>
Download mbox | patch
Permalink /patch/182442/
State New
Headers show

Comments

Igor Mammedov - Sept. 7, 2012, 8:54 p.m.
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Acked-by: Andreas Färber <afaerber@suse.de>
---
 target-i386/helper.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
Eduardo Habkost - Sept. 13, 2012, 2:41 p.m.
On Fri, Sep 07, 2012 at 10:54:52PM +0200, Igor Mammedov wrote:
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> Acked-by: Andreas Färber <afaerber@suse.de>
> ---
>  target-i386/helper.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/target-i386/helper.c b/target-i386/helper.c
> index 8a5da3d..a0e4c89 100644
> --- a/target-i386/helper.c
> +++ b/target-i386/helper.c
> @@ -1151,6 +1151,7 @@ X86CPU *cpu_x86_init(const char *cpu_model)
>  {
>      X86CPU *cpu;
>      CPUX86State *env;
> +    Error *error = NULL;
>  
>      cpu = X86_CPU(object_new(TYPE_X86_CPU));
>      env = &cpu->env;
> @@ -1161,8 +1162,12 @@ X86CPU *cpu_x86_init(const char *cpu_model)
>          return NULL;
>      }
>  
> -    x86_cpu_realize(OBJECT(cpu), NULL);
> -
> +    x86_cpu_realize(OBJECT(cpu), &error);
> +    if (error_is_set(&error)) {

Can't this be just written as "if (error)"?

(Same question as in the previous patch, but as this is new code I would
like to clarify what's the recommended style, before ACKing it)


> +        error_free(error);
> +        object_delete(OBJECT(cpu));
> +        return NULL;
> +    }
>      return cpu;
>  }
>  
> -- 
> 1.7.11.4
> 
>

Patch

diff --git a/target-i386/helper.c b/target-i386/helper.c
index 8a5da3d..a0e4c89 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -1151,6 +1151,7 @@  X86CPU *cpu_x86_init(const char *cpu_model)
 {
     X86CPU *cpu;
     CPUX86State *env;
+    Error *error = NULL;
 
     cpu = X86_CPU(object_new(TYPE_X86_CPU));
     env = &cpu->env;
@@ -1161,8 +1162,12 @@  X86CPU *cpu_x86_init(const char *cpu_model)
         return NULL;
     }
 
-    x86_cpu_realize(OBJECT(cpu), NULL);
-
+    x86_cpu_realize(OBJECT(cpu), &error);
+    if (error_is_set(&error)) {
+        error_free(error);
+        object_delete(OBJECT(cpu));
+        return NULL;
+    }
     return cpu;
 }