Message ID | 20191001155319.8066-3-vsementsov@virtuozzo.com |
---|---|
State | New |
Headers | show |
Series | error: auto propagated local_err | expand |
On 10/1/19 10:52 AM, Vladimir Sementsov-Ogievskiy wrote: > fit_load_fdt forget to check that errp is not NULL and to zero it after > freeing. Fix it. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- > hw/core/loader-fit.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) Reviewed-by: Eric Blake <eblake@redhat.com> > > diff --git a/hw/core/loader-fit.c b/hw/core/loader-fit.c > index 953b16bc82..3ee9fb2f2e 100644 > --- a/hw/core/loader-fit.c > +++ b/hw/core/loader-fit.c > @@ -200,7 +200,10 @@ static int fit_load_fdt(const struct fit_loader *ldr, const void *itb, > err = fit_image_addr(itb, img_off, "load", &load_addr, errp); > if (err == -ENOENT) { > load_addr = ROUND_UP(kernel_end, 64 * KiB) + (10 * MiB); > - error_free(*errp); > + if (errp) { > + error_free(*errp); > + *errp = NULL; > + } > } else if (err) { > error_prepend(errp, "unable to read FDT load address from FIT: "); > ret = err; >
Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> writes: > fit_load_fdt forget to check that errp is not NULL and to zero it after > freeing. Fix it. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- > hw/core/loader-fit.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/hw/core/loader-fit.c b/hw/core/loader-fit.c > index 953b16bc82..3ee9fb2f2e 100644 > --- a/hw/core/loader-fit.c > +++ b/hw/core/loader-fit.c > @@ -200,7 +200,10 @@ static int fit_load_fdt(const struct fit_loader *ldr, const void *itb, > err = fit_image_addr(itb, img_off, "load", &load_addr, errp); > if (err == -ENOENT) { > load_addr = ROUND_UP(kernel_end, 64 * KiB) + (10 * MiB); > - error_free(*errp); > + if (errp) { > + error_free(*errp); > + *errp = NULL; > + } > } else if (err) { > error_prepend(errp, "unable to read FDT load address from FIT: "); > ret = err; Hmm. Should we have error_clear(), similar to g_clear_error()? https://developer.gnome.org/glib/stable/glib-Error-Reporting.html#g-clear-error
diff --git a/hw/core/loader-fit.c b/hw/core/loader-fit.c index 953b16bc82..3ee9fb2f2e 100644 --- a/hw/core/loader-fit.c +++ b/hw/core/loader-fit.c @@ -200,7 +200,10 @@ static int fit_load_fdt(const struct fit_loader *ldr, const void *itb, err = fit_image_addr(itb, img_off, "load", &load_addr, errp); if (err == -ENOENT) { load_addr = ROUND_UP(kernel_end, 64 * KiB) + (10 * MiB); - error_free(*errp); + if (errp) { + error_free(*errp); + *errp = NULL; + } } else if (err) { error_prepend(errp, "unable to read FDT load address from FIT: "); ret = err;
fit_load_fdt forget to check that errp is not NULL and to zero it after freeing. Fix it. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> --- hw/core/loader-fit.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)