From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53106) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wsu10-0000x6-IG for qemu-devel@nongnu.org; Fri, 06 Jun 2014 09:17:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wsu0r-0006zk-HX for qemu-devel@nongnu.org; Fri, 06 Jun 2014 09:17:02 -0400 Received: from mail-we0-x22a.google.com ([2a00:1450:400c:c03::22a]:62352) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wsu0r-0006zZ-BI for qemu-devel@nongnu.org; Fri, 06 Jun 2014 09:16:53 -0400 Received: by mail-we0-f170.google.com with SMTP id u57so2854791wes.15 for ; Fri, 06 Jun 2014 06:16:52 -0700 (PDT) Date: Fri, 6 Jun 2014 15:16:49 +0200 From: Stefan Hajnoczi Message-ID: <20140606131649.GE14322@stefanha-thinkpad> References: <1402019610-2985-1-git-send-email-famz@redhat.com> <1402019610-2985-10-git-send-email-famz@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1402019610-2985-10-git-send-email-famz@redhat.com> Subject: Re: [Qemu-devel] [PATCH v3 9/9] virtio-blk: Fix and clean up the in_sg and out_sg check List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fam Zheng Cc: Kevin Wolf , Paolo Bonzini , qemu-devel@nongnu.org, Stefan Hajnoczi 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.