Am 17.09.2013 18:43, schrieb Stefan Weil: > The patch fixes a warning from gcc (Debian 4.6.3-14+rpi1) 4.6.3: > > block/stream.c:141:22: error: > ‘copy’ may be used uninitialized in this function [-Werror=uninitialized] > > This is not a real bug - a better compiler would not complain. > > Now 'copy' has always a defined value, so the check for ret >= 0 > can be removed. > > Signed-off-by: Stefan Weil <s...@weilnetz.de> > --- > block/stream.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/block/stream.c b/block/stream.c > index 078ce4a..fc19194 100644 > --- a/block/stream.c > +++ b/block/stream.c > @@ -108,7 +108,7 @@ static void coroutine_fn stream_run(void *opaque) > > for (sector_num = 0; sector_num < end; sector_num += n) { > uint64_t delay_ns = 0; > - bool copy; > + bool copy = false; > > wait: > /* Note that even when no rate limit is applied we need to yield > @@ -123,7 +123,6 @@ wait: > STREAM_BUFFER_SIZE / BDRV_SECTOR_SIZE, &n); > if (ret == 1) { > /* Allocated in the top, no need to copy. */ > - copy = false; > } else if (ret >= 0) { > /* Copy if allocated in the intermediate images. Limit to the > * known-unallocated area [sector_num, sector_num+n). */
Sorry for not spotting this patch earlier. This hunk looks wrong and needs to be dropped, I believe. In the ret >= 0 && copy case, there is a "goto wait" which would now no longer be able to go from copy == true -> copy == false. Not sure if that can happen in practice. Andreas > @@ -138,7 +137,7 @@ wait: > copy = (ret == 1); > } > trace_stream_one_iteration(s, sector_num, n, ret); > - if (ret >= 0 && copy) { > + if (copy) { > if (s->common.speed) { > delay_ns = ratelimit_calculate_delay(&s->limit, n); > if (delay_ns > 0) { > -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg