On Tue, 6 Jun 2017 16:28:26 +0100 Peter Maydell <peter.mayd...@linaro.org> wrote:
> On 6 June 2017 at 16:22, Greg Kurz <gr...@kaod.org> wrote: > > The string returned by object_property_get_str() is dynamically allocated. > > > > Signed-off-by: Greg Kurz <gr...@kaod.org> > > --- > > target/ppc/kvm.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c > > index 88817620766c..f2f7c531bc7b 100644 > > --- a/target/ppc/kvm.c > > +++ b/target/ppc/kvm.c > > @@ -486,6 +486,7 @@ bool kvmppc_is_mem_backend_page_size_ok(const char > > *obj_path) > > > > if (mempath) { > > pagesize = qemu_mempath_getpagesize(mempath); > > + g_free(mempath); > > } else { > > pagesize = getpagesize(); > > } > > Huh, I wasn't expecting this function to free its argument. Hmm... mempath isn't an argument, it is computed locally: bool kvmppc_is_mem_backend_page_size_ok(const char *obj_path) { Object *mem_obj = object_resolve_path(obj_path, NULL); char *mempath = object_property_get_str(mem_obj, "mem-path", NULL); long pagesize; if (mempath) { pagesize = qemu_mempath_getpagesize(mempath); g_free(mempath); } else { pagesize = getpagesize(); } return pagesize >= max_cpu_page_size; } > If we take that API then don't we also need to change the > two other implementations of it in the tree? Having the > single caller do the g_free() seems simpler... > > thanks > -- PMM
pgpKZNVw9yq5m.pgp
Description: OpenPGP digital signature