[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH v4 2/4] block: Guarantee that *file
From: |
John Snow |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH v4 2/4] block: Guarantee that *file is set on bdrv_get_block_status() |
Date: |
Mon, 5 Jun 2017 20:52:39 -0400 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.0 |
On 06/05/2017 04:38 PM, Eric Blake wrote:
> 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: address@hidden
> Signed-off-by: Eric Blake <address@hidden>
> Reviewed-by: Fam Zheng <address@hidden>
> Reviewed-by: Max Reitz <address@hidden>
Reviewed-by: John Snow <address@hidden>
- [Qemu-block] [PATCH v4 0/4] more blkdebug tweaks, Eric Blake, 2017/06/05
- [Qemu-block] [PATCH v4 1/4] qemu-io: Don't die on second open, Eric Blake, 2017/06/05
- [Qemu-block] [PATCH v4 2/4] block: Guarantee that *file is set on bdrv_get_block_status(), Eric Blake, 2017/06/05
- Re: [Qemu-block] [Qemu-devel] [PATCH v4 2/4] block: Guarantee that *file is set on bdrv_get_block_status(),
John Snow <=
- [Qemu-block] [PATCH v4 4/4] blkdebug: Support .bdrv_co_get_block_status, Eric Blake, 2017/06/05
- [Qemu-block] [PATCH v4 3/4] block: Simplify use of BDRV_BLOCK_RAW, Eric Blake, 2017/06/05
- Re: [Qemu-block] [Qemu-devel] [PATCH v4 0/4] more blkdebug tweaks, John Snow, 2017/06/06
- Re: [Qemu-block] [PATCH v4 0/4] more blkdebug tweaks, Kevin Wolf, 2017/06/06