12.10.2019 9:33, Philippe Mathieu-Daudé wrote: > On 10/11/19 6:05 PM, Vladimir Sementsov-Ogievskiy wrote: >> If we want to add some info to errp (by error_prepend() or >> error_append_hint()), we must use the ERRP_AUTO_PROPAGATE macro. >> Otherwise, this info will not be added when errp == &fatal_err >> (the program will exit prior to the error_append_hint() or >> error_prepend() call). Fix such cases. >> >> If we want to check error after errp-function call, we need to >> introduce local_err and than propagate it to errp. Instead, use >> ERRP_AUTO_PROPAGATE macro, benefits are: >> 1. No need of explicit error_propagate call >> 2. No need of explicit local_err variable: use errp directly >> 3. ERRP_AUTO_PROPAGATE leaves errp as is if it's not NULL or >> &error_fatel, this means that we don't break error_abort >> (we'll abort on error_set, not on error_propagate) >> >> This commit (together with its neighbors) was generated by >> >> for f in $(git grep -l errp \*.[ch]); do \ >> spatch --sp-file scripts/coccinelle/auto-propagated-errp.cocci \ >> --macro-file scripts/cocci-macro-file.h --in-place --no-show-diff $f; \ >> done; >> >> then fix a bit of compilation problems: coccinelle for some reason >> leaves several >> f() { >> ... >> goto out; >> ... >> out: >> } >> patterns, with "out:" at function end. >> >> then >> ./python/commit-per-subsystem.py MAINTAINERS "$(< auto-msg)" >> >> (auto-msg was a file with this commit message) >> >> Still, for backporting it may be more comfortable to use only the first >> command and then do one huge commit. >> >> Reported-by: Kevin Wolf <kw...@redhat.com> >> Reported-by: Greg Kurz <gr...@kaod.org> >> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> >> --- >> hw/sd/ssi-sd.c | 14 ++++++++------ >> 1 file changed, 8 insertions(+), 6 deletions(-) >> >> diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c >> index 91db069212..f42204d649 100644 >> --- a/hw/sd/ssi-sd.c >> +++ b/hw/sd/ssi-sd.c >> @@ -241,10 +241,10 @@ static const VMStateDescription vmstate_ssi_sd = { >> static void ssi_sd_realize(SSISlave *d, Error **errp) >> { >> + ERRP_AUTO_PROPAGATE(); >> ssi_sd_state *s = FROM_SSI_SLAVE(ssi_sd_state, d); >> DeviceState *carddev; >> DriveInfo *dinfo; >> - Error *err = NULL; >> qbus_create_inplace(&s->sdbus, sizeof(s->sdbus), TYPE_SD_BUS, >> DEVICE(d), "sd-bus"); >> @@ -254,12 +254,14 @@ static void ssi_sd_realize(SSISlave *d, Error **errp) >> dinfo = drive_get_next(IF_SD); >> carddev = qdev_create(BUS(&s->sdbus), TYPE_SD_CARD); >> if (dinfo) { >> - qdev_prop_set_drive(carddev, "drive", blk_by_legacy_dinfo(dinfo), >> &err); >> + qdev_prop_set_drive(carddev, "drive", blk_by_legacy_dinfo(dinfo), >> + errp); > > This fits 72 chars, can you keep it in the same line?
Honestly, I'd prefer not fixing code style in these 100 auto-generated commits... But if only you request this, it's not a problem. > >> } >> - object_property_set_bool(OBJECT(carddev), true, "spi", &err); >> - object_property_set_bool(OBJECT(carddev), true, "realized", &err); >> - if (err) { >> - error_setg(errp, "failed to init SD card: %s", >> error_get_pretty(err)); >> + object_property_set_bool(OBJECT(carddev), true, "spi", errp); >> + object_property_set_bool(OBJECT(carddev), true, "realized", errp); >> + if (*errp) { >> + error_setg(errp, "failed to init SD card: %s", >> + error_get_pretty(*errp)); > > Ditto... > >> return; >> } >> } >> > > If possible please squash with "47/126 SD (Secure Card)" Hmm this is in separate, as it's unmaintained accordingly to MAINTAINERS. I'll rebase the next version on your MAINTAINERS-fixes and it should work. > > Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com> Thanks! -- Best regards, Vladimir