On Fri, Jun 06, 2014 at 09:53:30AM +0800, Fam Zheng wrote:
> @@ -353,19 +355,18 @@ static void virtio_blk_handle_request(VirtIOBlockReq
> *req,
> exit(1);
> }
>
> - if (req->elem->out_sg[0].iov_len < sizeof(req->out) ||
> - req->elem->in_sg[req->elem->in_num - 1].iov_len < sizeof(*req->in)) {
> - error_report("virtio-blk header not in correct element");
> - exit(1);
> - }
> -
> if (unlikely(iov_to_buf(iov, out_num, 0, &req->out,
> sizeof(req->out)) != sizeof(req->out))) {
> error_report("virtio-blk request outhdr too short");
> exit(1);
> }
> iov_discard_front(&iov, &out_num, sizeof(req->out));
> - req->in = (void *)req->elem->in_sg[req->elem->in_num - 1].iov_base;
> + assert(in_iov[in_num - 1].iov_len >=
> + sizeof(struct virtio_blk_inhdr));
Why use assert() when the rest of the function uses error_report() +
exit(1)? Please keep the code consistent.