Markus Armbruster <arm...@redhat.com> writes: > Eric Blake <ebl...@redhat.com> writes: > >> On 05/13/2014 10:02 AM, Markus Armbruster wrote: >>> Cc: MORITA Kazutaka <morita.kazut...@lab.ntt.co.jp> >>> Signed-off-by: Markus Armbruster <arm...@redhat.com> >>> --- >>> block/sheepdog.c | 21 ++++++++++++--------- >>> 1 file changed, 12 insertions(+), 9 deletions(-) >>> >>> @@ -1568,13 +1565,15 @@ static int sd_prealloc(const char *filename) >>> */ >>> ret = bdrv_pread(bs, idx * SD_DATA_OBJ_SIZE, buf, >>> SD_DATA_OBJ_SIZE); >>> if (ret < 0) { >>> - goto out; >>> + goto out_setg; >>> } >>> ret = bdrv_pwrite(bs, idx * SD_DATA_OBJ_SIZE, buf, >>> SD_DATA_OBJ_SIZE); >>> if (ret < 0) { >>> - goto out; >>> + goto out_setg; >>> } >>> } >>> +out_setg: >>> + error_setg_errno(errp, -ret, "Can't pre-allocate"); >> >> This unconditionally sets errp even when the for loop completes >> normally. Are you sure you want this control flow? Maybe you are >> missing a 'goto out' prior to the 'out_setg' label? > > You're right, will fix, thanks!
I went over the whole series again looking for similar mistakes, and found a few in PATCH 04 and 17. Respin coming.