Files
qemu-ios/tests
Eric Blake 64945cb5f3 block: Guarantee that *file is set on bdrv_get_block_status()
We document that *file is valid if the return is not an error and
includes BDRV_BLOCK_OFFSET_VALID, but forgot to obey this contract
when a driver (such as blkdebug) lacks a callback.  Messed up in
commit 67a0fd2 (v2.6), when we added the file parameter.

Enhance qemu-iotest 177 to cover this, using a sequence that would
print garbage or even SEGV, because it was dererefencing through
uninitialized memory.  [The resulting test output shows that we
have less-than-ideal block status from the blkdebug driver, but
that's a separate fix coming up soon.]

Setting *file on all paths that return BDRV_BLOCK_OFFSET_VALID is
enough to fix the crash, but we can go one step further: always
setting *file, even on error, means that a broken caller that
blindly dereferences file without checking for error is now more
likely to get a reliable SEGV instead of randomly acting on garbage,
making it easier to diagnose such buggy callers.  Adding an
assertion that file is set where expected doesn't hurt either.

CC: qemu-stable@nongnu.org
Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
(cherry picked from commit 81c219ac6c)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2017-08-03 16:01:28 -05:00
..
…
2017-03-01 11:58:57 +04:00
2016-10-26 08:29:01 -07:00
2017-03-01 11:51:28 +04:00
2017-03-01 11:51:28 +04:00
2017-03-01 11:51:05 +04:00
2017-03-01 11:51:04 +04:00
2017-03-01 11:51:28 +04:00
2017-03-01 11:51:04 +04:00
2017-03-01 11:51:05 +04:00
2017-03-01 11:51:05 +04:00
2016-09-08 18:05:22 +04:00
2017-03-01 00:09:28 +04:00
2017-03-01 00:09:28 +04:00
2017-03-01 00:09:28 +04:00
2017-03-01 00:09:28 +04:00
2017-03-01 11:50:33 +04:00
2016-09-08 18:05:21 +04:00
2017-03-01 11:51:25 +04:00
2017-01-10 08:49:59 -08:00
2017-02-28 20:47:50 +01:00
2016-09-08 17:57:32 +04:00
2017-03-07 16:07:47 +01:00
2016-11-15 15:41:00 +00:00
2017-02-28 20:47:50 +01:00
2016-11-11 20:53:23 +08:00
2017-03-01 11:51:29 +04:00
2017-03-01 11:51:29 +04:00