]> git.ipfire.org Git - thirdparty/qemu.git/commit
raw: Check byte range uniformly
authorFam Zheng <famz@redhat.com>
Fri, 1 Jun 2018 09:26:40 +0000 (17:26 +0800)
committerStefan Hajnoczi <stefanha@redhat.com>
Fri, 1 Jun 2018 13:41:47 +0000 (14:41 +0100)
commit384455385248762e74a080978f18f0c8f74757fe
tree101e2e8e9dedefdf446b0da5cfbb862d8dc7fed0
parentfcc6767836efe1b160289905dce7228d594c123c
raw: Check byte range uniformly

We don't verify the request range against s->size in the I/O callbacks
except for raw_co_pwritev. This is inconsistent (especially for
raw_co_pwrite_zeroes and raw_co_pdiscard), so fix them, in the meanwhile
make the helper reusable by the coming new callbacks.

Note that in most cases the block layer already verifies the request
byte range against our reported image length, before invoking the driver
callbacks.  The exception is during image creating, after
blk_set_allow_write_beyond_eof(blk, true) is called. But in that case,
the requests are not directly from the user or guest. So there is no
visible behavior change in adding the check code.

The int64_t -> uint64_t inconsistency, as shown by the type casting, is
pre-existing due to the interface.

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Fam Zheng <famz@redhat.com>
Message-id: 20180601092648.24614-3-famz@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
block/raw-format.c