[PATCH] qom/object: Fix object_child_foreach_recursive() return value

Cédric Le Goater posted 1 patch 4 years, 1 month ago
Test docker-mingw@fedora passed
Test docker-quick@centos7 passed
Test checkpatch passed
Test FreeBSD passed
Test asan passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200404153340.164861-1-clg@kaod.org
Maintainers: "Daniel P. Berrangé" <berrange@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <ehabkost@redhat.com>
qom/object.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
[PATCH] qom/object: Fix object_child_foreach_recursive() return value
Posted by Cédric Le Goater 4 years, 1 month ago
When recursing, the return value of do_object_child_foreach() is not
taken into account.

Cc: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Fixes: d714b8de7747 ("qom: Add recursive version of object_child_for_each")
Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
 qom/object.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/qom/object.c b/qom/object.c
index 1812f792247d..b68a707a5e65 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -1057,7 +1057,10 @@ static int do_object_child_foreach(Object *obj,
                 break;
             }
             if (recurse) {
-                do_object_child_foreach(child, fn, opaque, true);
+                ret = do_object_child_foreach(child, fn, opaque, true);
+                if (ret != 0) {
+                    break;
+                }
             }
         }
     }
-- 
2.25.1


Re: [PATCH] qom/object: Fix object_child_foreach_recursive() return value
Posted by Cédric Le Goater 4 years, 1 month ago
Hello David,

On 4/4/20 5:33 PM, Cédric Le Goater wrote:
> When recursing, the return value of do_object_child_foreach() is not
> taken into account.

Patch "ppc/pnv: Create BMC devices only when defaults are enabled" :

	http://patchwork.ozlabs.org/patch/1266421

depends on this fix. 

May be it can go through the ppc branch ? A patchset with these
two patches would have been easier to track :/ Sorry about that.

Thanks,

C. 

> Cc: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
> Fixes: d714b8de7747 ("qom: Add recursive version of object_child_for_each")
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---
>  qom/object.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/qom/object.c b/qom/object.c
> index 1812f792247d..b68a707a5e65 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -1057,7 +1057,10 @@ static int do_object_child_foreach(Object *obj,
>                  break;
>              }
>              if (recurse) {
> -                do_object_child_foreach(child, fn, opaque, true);
> +                ret = do_object_child_foreach(child, fn, opaque, true);
> +                if (ret != 0) {
> +                    break;
> +                }
>              }
>          }
>      }
> 


Re: [PATCH] qom/object: Fix object_child_foreach_recursive() return value
Posted by Marc-André Lureau 4 years, 1 month ago
Hi,

On Sat, Apr 4, 2020 at 5:34 PM Cédric Le Goater <clg@kaod.org> wrote:
>
> When recursing, the return value of do_object_child_foreach() is not
> taken into account.
>
> Cc: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
> Fixes: d714b8de7747 ("qom: Add recursive version of object_child_for_each")
> Signed-off-by: Cédric Le Goater <clg@kaod.org>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>


> ---
>  qom/object.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/qom/object.c b/qom/object.c
> index 1812f792247d..b68a707a5e65 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -1057,7 +1057,10 @@ static int do_object_child_foreach(Object *obj,
>                  break;
>              }
>              if (recurse) {
> -                do_object_child_foreach(child, fn, opaque, true);
> +                ret = do_object_child_foreach(child, fn, opaque, true);
> +                if (ret != 0) {
> +                    break;
> +                }
>              }
>          }
>      }
> --
> 2.25.1
>
>


-- 
Marc-André Lureau

Re: [PATCH] qom/object: Fix object_child_foreach_recursive() return value
Posted by Cédric Le Goater 3 years, 12 months ago
Hello,

On 4/4/20 5:33 PM, Cédric Le Goater wrote:
> When recursing, the return value of do_object_child_foreach() is not
> taken into account.
> 
> Cc: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
> Fixes: d714b8de7747 ("qom: Add recursive version of object_child_for_each")
> Signed-off-by: Cédric Le Goater <clg@kaod.org>

What are the plans to merge this one ? 

Thanks,
C. 

> ---
>  qom/object.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/qom/object.c b/qom/object.c
> index 1812f792247d..b68a707a5e65 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -1057,7 +1057,10 @@ static int do_object_child_foreach(Object *obj,
>                  break;
>              }
>              if (recurse) {
> -                do_object_child_foreach(child, fn, opaque, true);
> +                ret = do_object_child_foreach(child, fn, opaque, true);
> +                if (ret != 0) {
> +                    break;
> +                }
>              }
>          }
>      }
> 


Re: [PATCH] qom/object: Fix object_child_foreach_recursive() return value
Posted by Philippe Mathieu-Daudé 3 years, 12 months ago
On 4/4/20 5:33 PM, Cédric Le Goater wrote:
> When recursing, the return value of do_object_child_foreach() is not
> taken into account.
> 
> Cc: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
> Fixes: d714b8de7747 ("qom: Add recursive version of object_child_for_each")

Indeed.

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---
>   qom/object.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/qom/object.c b/qom/object.c
> index 1812f792247d..b68a707a5e65 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -1057,7 +1057,10 @@ static int do_object_child_foreach(Object *obj,
>                   break;
>               }
>               if (recurse) {
> -                do_object_child_foreach(child, fn, opaque, true);
> +                ret = do_object_child_foreach(child, fn, opaque, true);
> +                if (ret != 0) {
> +                    break;
> +                }
>               }
>           }
>       }
>