diff mbox

[PATCHv3,6/9] pseries: Clean up error handling in spapr_rtas_register()

Message ID 1453091083-13931-7-git-send-email-david@gibson.dropbear.id.au (mailing list archive)
State New, archived
Headers show

Commit Message

David Gibson Jan. 18, 2016, 4:24 a.m. UTC
The errors detected in this function necessarily indicate bugs in the rest
of the qemu code, rather than an external or configuration problem.

So, a simple assert() is more appropriate than any more complex error
reporting.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 hw/ppc/spapr_rtas.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

Comments

Thomas Huth Jan. 18, 2016, 9:20 a.m. UTC | #1
On 18.01.2016 05:24, David Gibson wrote:
> The errors detected in this function necessarily indicate bugs in the rest
> of the qemu code, rather than an external or configuration problem.
> 
> So, a simple assert() is more appropriate than any more complex error
> reporting.
> 
> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> ---
>  hw/ppc/spapr_rtas.c | 12 +++---------
>  1 file changed, 3 insertions(+), 9 deletions(-)
> 
> diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
> index 34b12a3..0be52ae 100644
> --- a/hw/ppc/spapr_rtas.c
> +++ b/hw/ppc/spapr_rtas.c
> @@ -648,17 +648,11 @@ target_ulong spapr_rtas_call(PowerPCCPU *cpu, sPAPRMachineState *spapr,
>  
>  void spapr_rtas_register(int token, const char *name, spapr_rtas_fn fn)
>  {
> -    if (!((token >= RTAS_TOKEN_BASE) && (token < RTAS_TOKEN_MAX))) {
> -        fprintf(stderr, "RTAS invalid token 0x%x\n", token);
> -        exit(1);
> -    }
> +    assert((token >= RTAS_TOKEN_BASE) && (token < RTAS_TOKEN_MAX));

While you're at it, you could also get rid of some superfluous
parentheses in that statement:

	assert(token >= RTAS_TOKEN_BASE && token < RTAS_TOKEN_MAX);

>      token -= RTAS_TOKEN_BASE;
> -    if (rtas_table[token].name) {
> -        fprintf(stderr, "RTAS call \"%s\" is registered already as 0x%x\n",
> -                rtas_table[token].name, token);
> -        exit(1);
> -    }
> +
> +    assert(!rtas_table[token].name);
>  
>      rtas_table[token].name = name;
>      rtas_table[token].fn = fn;
> 

Anyway, patch sounds reasonable,
Reviewed-by: Thomas Huth <thuth@redhat.com>
David Gibson Jan. 19, 2016, 12:23 a.m. UTC | #2
On Mon, Jan 18, 2016 at 10:20:24AM +0100, Thomas Huth wrote:
> On 18.01.2016 05:24, David Gibson wrote:
> > The errors detected in this function necessarily indicate bugs in the rest
> > of the qemu code, rather than an external or configuration problem.
> > 
> > So, a simple assert() is more appropriate than any more complex error
> > reporting.
> > 
> > Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
> > ---
> >  hw/ppc/spapr_rtas.c | 12 +++---------
> >  1 file changed, 3 insertions(+), 9 deletions(-)
> > 
> > diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
> > index 34b12a3..0be52ae 100644
> > --- a/hw/ppc/spapr_rtas.c
> > +++ b/hw/ppc/spapr_rtas.c
> > @@ -648,17 +648,11 @@ target_ulong spapr_rtas_call(PowerPCCPU *cpu, sPAPRMachineState *spapr,
> >  
> >  void spapr_rtas_register(int token, const char *name, spapr_rtas_fn fn)
> >  {
> > -    if (!((token >= RTAS_TOKEN_BASE) && (token < RTAS_TOKEN_MAX))) {
> > -        fprintf(stderr, "RTAS invalid token 0x%x\n", token);
> > -        exit(1);
> > -    }
> > +    assert((token >= RTAS_TOKEN_BASE) && (token < RTAS_TOKEN_MAX));
> 
> While you're at it, you could also get rid of some superfluous
> parentheses in that statement:
> 
> 	assert(token >= RTAS_TOKEN_BASE && token < RTAS_TOKEN_MAX);

I could, but I won't because I think it's clearer as it is.

> >      token -= RTAS_TOKEN_BASE;
> > -    if (rtas_table[token].name) {
> > -        fprintf(stderr, "RTAS call \"%s\" is registered already as 0x%x\n",
> > -                rtas_table[token].name, token);
> > -        exit(1);
> > -    }
> > +
> > +    assert(!rtas_table[token].name);
> >  
> >      rtas_table[token].name = name;
> >      rtas_table[token].fn = fn;
> > 
> 
> Anyway, patch sounds reasonable,
> Reviewed-by: Thomas Huth <thuth@redhat.com>
>
diff mbox

Patch

diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c
index 34b12a3..0be52ae 100644
--- a/hw/ppc/spapr_rtas.c
+++ b/hw/ppc/spapr_rtas.c
@@ -648,17 +648,11 @@  target_ulong spapr_rtas_call(PowerPCCPU *cpu, sPAPRMachineState *spapr,
 
 void spapr_rtas_register(int token, const char *name, spapr_rtas_fn fn)
 {
-    if (!((token >= RTAS_TOKEN_BASE) && (token < RTAS_TOKEN_MAX))) {
-        fprintf(stderr, "RTAS invalid token 0x%x\n", token);
-        exit(1);
-    }
+    assert((token >= RTAS_TOKEN_BASE) && (token < RTAS_TOKEN_MAX));
 
     token -= RTAS_TOKEN_BASE;
-    if (rtas_table[token].name) {
-        fprintf(stderr, "RTAS call \"%s\" is registered already as 0x%x\n",
-                rtas_table[token].name, token);
-        exit(1);
-    }
+
+    assert(!rtas_table[token].name);
 
     rtas_table[token].name = name;
     rtas_table[token].fn = fn;