14.10.2019 12:14, Philippe Mathieu-Daudé wrote: > On 10/14/19 11:07 AM, Vladimir Sementsov-Ogievskiy wrote: >> 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. > > Ah, Coccinelle added the newline. Hmm maybe there is a spatch argument to set > the maximum line length? > > $ spatch --longhelp > [...] > --linux-spacing spacing of + code follows the conventions of > Linux > --smpl-spacing spacing of + code follows the semantic patch > --indent default indent, in spaces (no tabs) > --max-width column limit for generated code > > Have you tried --max-width? Maybe we need a combination with --smpl-spacing.
Hmm, thanks, I'll try. > >>> >>>> } >>>> - 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