On Fri, 28 Feb 2020 at 09:30, Juan Quintela <quint...@redhat.com> wrote: > > From: Stefan Hajnoczi <stefa...@redhat.com> > > Both <linux/fs.h> and <sys/mount.h> define BLOCK_SIZE macros. Avoiding > using that name in block/migration.c. > > I noticed this when including <liburing.h> (Linux io_uring) from > "block/aio.h" and compilation failed. Although patches adding that > include haven't been sent yet, it makes sense to rename the macro now in > case someone else stumbles on it in the meantime.
A rather old change, and it didn't even introduce the code that Coverity is complaining about, but this seems as good a point as any to hang the email off of... BLK_MIG_BLOCK_SIZE doesn't have a ULL suffix, so it's 32 bits, and so Coverity complains about places where we multiply some block count by it and then use that in a 64-bit result, eg here: > @@ -770,7 +771,7 @@ static int block_save_iterate(QEMUFile *f, void *opaque) > > /* control the rate of transfer */ > blk_mig_lock(); > - while (block_mig_state.read_done * BLOCK_SIZE < > + while (block_mig_state.read_done * BLK_MIG_BLOCK_SIZE < > qemu_file_get_rate_limit(f) && > block_mig_state.submitted < MAX_PARALLEL_IO && > (block_mig_state.submitted + block_mig_state.read_done) < and here: > @@ -874,13 +875,13 @@ static void block_save_pending(QEMUFile *f, void > *opaque, uint64_t max_size, > qemu_mutex_unlock_iothread(); > > blk_mig_lock(); > - pending += block_mig_state.submitted * BLOCK_SIZE + > - block_mig_state.read_done * BLOCK_SIZE; > + pending += block_mig_state.submitted * BLK_MIG_BLOCK_SIZE + > + block_mig_state.read_done * BLK_MIG_BLOCK_SIZE; > blk_mig_unlock(); Putting a suitable cast to ensure the multiply is done at 64 bits would satisfy Coverity. This is CID 1487136, 1487175. thanks -- PMM