Thread (4 messages) 4 messages, 2 authors, 2021-09-29

Re: [bug report] vdpa_sim_blk: implement ramdisk behaviour

flat view

From: Stefano Garzarella <sgarzare@redhat.com>
Date: 2021-09-29 12:07:24

On Wed, Sep 29, 2021 at 02:46:52PM +0300, Dan Carpenter wrote:
On Wed, Sep 29, 2021 at 02:37:42PM +0300, Dan Carpenter wrote:
quoted
    89         /* The last byte is the status and we checked if the last iov has
    90          * enough room for it.
    91          */
    92         to_push = vringh_kiov_length(&vq->in_iov) - 1;

Are you positive that vringh_kiov_length() cannot be zero?  I looked at
the range_check() and there is no check for "if (*len == 0)".

    93
    94         to_pull = vringh_kiov_length(&vq->out_iov);
    95
    96         bytes = vringh_iov_pull_iotlb(&vq->vring, &vq->out_iov, &hdr,
    97                                       sizeof(hdr));
    98         if (bytes != sizeof(hdr)) {
    99                 dev_err(&vdpasim->vdpa.dev, "request out header too short\n");
    100                 return false;
    101         }
    102
    103         to_pull -= bytes;

The same "bytes" is used for both to_pull and to_push.  In this
assignment it would only be used for the default case which prints an
error message.
Sorry, no.  This part is wrong.  "bytes" is not used for "to_push"
either here or below.  But I still am not sure "*len == 0" or how we
At line 84 we check that the last `in_iov` has at least one byte, so vringh_kiov_length(&vq->in_iov) cannot be zero.
It will return the sum of all lengths, so at least 1.

Maybe better to add a comment.
know that "to_push >= VIRTIO_BLK_ID_BYTES".
vringh_iov_push_iotlb() will push at least the bytes available in `in_iov`, if these are less, it will copy less bytes of VIRTIO_BLK_ID_BYTES.

Maybe here it would be better to add a check because the driver isn't following the specification.

And I'd avoid the subtraction highlighted by Smatch static checker.

Thanks for reporting. I'll send patches to fix these issues.

Stefano

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help