[PATCH v2 1/5] target/ppc/kvm.c: do not return -1 on uint64_t return

Daniel Henrique Barboza posted 5 patches 3 years, 7 months ago
Maintainers: "Cédric Le Goater" <clg@kaod.org>, Daniel Henrique Barboza <danielhb413@gmail.com>, David Gibson <david@gibson.dropbear.id.au>, Greg Kurz <groug@kaod.org>, Paolo Bonzini <pbonzini@redhat.com>
[PATCH v2 1/5] target/ppc/kvm.c: do not return -1 on uint64_t return
Posted by Daniel Henrique Barboza 3 years, 7 months ago
kvmppc_read_int_dt() and kvmppc_read_int_cpu_dt() return an uint64_t,
while returning -1 when an error occurs. kvmppc_read_int_cpu_dt() claims
that it will return 0 if anything wrong happens, but it's returning -1
if kmvppc_find_cpu_dt() fails.

The elephant in the room is that returning -1 while claiming that the
return is uint64_t, results in 18446744073709551615 for the callers.
This reason alone is enough to not return -1 under these circunstances.

We'll still have the problem of having to deal with a '0' return that
might, or might not be, an error. We'll make this distintion clear in
the next patches.

Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
 target/ppc/kvm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 6eed466f80..109823136d 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -1907,7 +1907,7 @@ static uint64_t kvmppc_read_int_dt(const char *filename)
 
     f = fopen(filename, "rb");
     if (!f) {
-        return -1;
+        return 0;
     }
 
     len = fread(&u, 1, sizeof(u), f);
@@ -1934,7 +1934,7 @@ static uint64_t kvmppc_read_int_cpu_dt(const char *propname)
     uint64_t val;
 
     if (kvmppc_find_cpu_dt(buf, sizeof(buf))) {
-        return -1;
+        return 0;
     }
 
     tmp = g_strdup_printf("%s/%s", buf, propname);
-- 
2.36.1
Re: [PATCH v2 1/5] target/ppc/kvm.c: do not return -1 on uint64_t return
Posted by Cédric Le Goater 3 years, 7 months ago
On 7/6/22 21:31, Daniel Henrique Barboza wrote:
> kvmppc_read_int_dt() and kvmppc_read_int_cpu_dt() return an uint64_t,
> while returning -1 when an error occurs. kvmppc_read_int_cpu_dt() claims
> that it will return 0 if anything wrong happens, but it's returning -1
> if kmvppc_find_cpu_dt() fails.
> 
> The elephant in the room is that returning -1 while claiming that the
> return is uint64_t, results in 18446744073709551615 for the callers.
> This reason alone is enough to not return -1 under these circunstances.
> 
> We'll still have the problem of having to deal with a '0' return that
> might, or might not be, an error. We'll make this distintion clear in
> the next patches.
> 
> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
> ---
>   target/ppc/kvm.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> index 6eed466f80..109823136d 100644
> --- a/target/ppc/kvm.c
> +++ b/target/ppc/kvm.c
> @@ -1907,7 +1907,7 @@ static uint64_t kvmppc_read_int_dt(const char *filename)

I would add an errp parameter and use error_setg_errno().

C.


>   
>       f = fopen(filename, "rb");
>       if (!f) {
> -        return -1;
> +        return 0;
>       }
>   
>       len = fread(&u, 1, sizeof(u), f);
> @@ -1934,7 +1934,7 @@ static uint64_t kvmppc_read_int_cpu_dt(const char *propname)
>       uint64_t val;
>   
>       if (kvmppc_find_cpu_dt(buf, sizeof(buf))) {
> -        return -1;
> +        return 0;
>       }
>   
>       tmp = g_strdup_printf("%s/%s", buf, propname);