Message ID | 20230405101811.76663-10-philmd@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | accel: Share CPUState accel context (HAX/NVMM/WHPX/HVF) | expand |
Philippe Mathieu-Daudé <philmd@linaro.org> writes: > g_malloc0() can not fail. Use g_try_malloc0() instead. > > https://developer-old.gnome.org/glib/stable/glib-Memory-Allocation.html#glib-Memory-Allocation.description > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > target/i386/nvmm/nvmm-all.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c > index 3c7bdd560f..45fd318d23 100644 > --- a/target/i386/nvmm/nvmm-all.c > +++ b/target/i386/nvmm/nvmm-all.c > @@ -942,7 +942,7 @@ nvmm_init_vcpu(CPUState *cpu) > } > } > > - qcpu = g_malloc0(sizeof(*qcpu)); > + qcpu = g_try_malloc0(sizeof(*qcpu)); > if (qcpu == NULL) { > error_report("NVMM: Failed to allocate VCPU context."); > return -ENOMEM; Why - if we fail to allocate the vCPU context its game over anyway any established QEMU practice is its ok to assert fail on a malloc when there isn't enough memory. IOW keep the g_malloc0 and remove the error handling case.
On 5/4/23 15:55, Alex Bennée wrote: > > Philippe Mathieu-Daudé <philmd@linaro.org> writes: > >> g_malloc0() can not fail. Use g_try_malloc0() instead. >> >> https://developer-old.gnome.org/glib/stable/glib-Memory-Allocation.html#glib-Memory-Allocation.description >> >> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> >> --- >> target/i386/nvmm/nvmm-all.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c >> index 3c7bdd560f..45fd318d23 100644 >> --- a/target/i386/nvmm/nvmm-all.c >> +++ b/target/i386/nvmm/nvmm-all.c >> @@ -942,7 +942,7 @@ nvmm_init_vcpu(CPUState *cpu) >> } >> } >> >> - qcpu = g_malloc0(sizeof(*qcpu)); >> + qcpu = g_try_malloc0(sizeof(*qcpu)); >> if (qcpu == NULL) { >> error_report("NVMM: Failed to allocate VCPU context."); >> return -ENOMEM; > > Why - if we fail to allocate the vCPU context its game over anyway any > established QEMU practice is its ok to assert fail on a malloc when > there isn't enough memory. IOW keep the g_malloc0 and remove the error > handling case. This was my first approach but then I realized the author took care to warn / return ENOMEM, so I went for _try_; but you are right, since this is "game over" let's simply remove the check.
diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c index 3c7bdd560f..45fd318d23 100644 --- a/target/i386/nvmm/nvmm-all.c +++ b/target/i386/nvmm/nvmm-all.c @@ -942,7 +942,7 @@ nvmm_init_vcpu(CPUState *cpu) } } - qcpu = g_malloc0(sizeof(*qcpu)); + qcpu = g_try_malloc0(sizeof(*qcpu)); if (qcpu == NULL) { error_report("NVMM: Failed to allocate VCPU context."); return -ENOMEM;
g_malloc0() can not fail. Use g_try_malloc0() instead. https://developer-old.gnome.org/glib/stable/glib-Memory-Allocation.html#glib-Memory-Allocation.description Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- target/i386/nvmm/nvmm-all.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)