720db5d raw: Check byte range uniformly

1 file Authored by Fam Zheng 5 years ago, Committed by Michael Roth 5 years ago,
    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>
    (cherry picked from commit 384455385248762e74a080978f18f0c8f74757fe)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
    
        
file modified
+39 -25