From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37080) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c8wJR-0006PK-4f for qemu-devel@nongnu.org; Mon, 21 Nov 2016 16:39:42 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c8wJQ-00014S-Am for qemu-devel@nongnu.org; Mon, 21 Nov 2016 16:39:41 -0500 Received: from mail.kernel.org ([198.145.29.136]:36856) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1c8wJQ-000144-1D for qemu-devel@nongnu.org; Mon, 21 Nov 2016 16:39:40 -0500 From: Stefano Stabellini Date: Mon, 21 Nov 2016 13:39:31 -0800 Message-Id: <1479764372-29470-3-git-send-email-sstabellini@kernel.org> In-Reply-To: <1479764372-29470-1-git-send-email-sstabellini@kernel.org> References: <1479764372-29470-1-git-send-email-sstabellini@kernel.org> Subject: [Qemu-devel] [PATCH 3/4] 9pfs: use v9fs_init_qiov_from_pdu instead of v9fs_pack List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: aneesh.kumar@linux.vnet.ibm.com Cc: groug@kaod.org, sstabellini@kernel.org, qemu-devel@nongnu.org, xen-devel@lists.xensource.com, anthony.perard@citrix.com, wei.liu2@citrix.com v9fs_xattr_read should not access VirtQueueElement elems directly. Move v9fs_init_qiov_from_pdu up in the file and call v9fs_init_qiov_from_pdu instead of v9fs_pack. Signed-off-by: Stefano Stabellini --- hw/9pfs/9p.c | 58 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c index 5a20a13..b6ec042 100644 --- a/hw/9pfs/9p.c +++ b/hw/9pfs/9p.c @@ -1633,14 +1633,39 @@ out_nofid: pdu_complete(pdu, err); } +/* + * Create a QEMUIOVector for a sub-region of PDU iovecs + * + * @qiov: uninitialized QEMUIOVector + * @skip: number of bytes to skip from beginning of PDU + * @size: number of bytes to include + * @is_write: true - write, false - read + * + * The resulting QEMUIOVector has heap-allocated iovecs and must be cleaned up + * with qemu_iovec_destroy(). + */ +static void v9fs_init_qiov_from_pdu(QEMUIOVector *qiov, V9fsPDU *pdu, + size_t skip, size_t size, + bool is_write) +{ + QEMUIOVector elem; + struct iovec *iov; + unsigned int niov; + + pdu->s->transport->init_iov_from_pdu(pdu, &iov, &niov, is_write); + + qemu_iovec_init_external(&elem, iov, niov); + qemu_iovec_init(qiov, niov); + qemu_iovec_concat(qiov, &elem, skip, size); +} + static int v9fs_xattr_read(V9fsState *s, V9fsPDU *pdu, V9fsFidState *fidp, uint64_t off, uint32_t max_count) { ssize_t err; size_t offset = 7; uint64_t read_count; - V9fsVirtioState *v = container_of(s, V9fsVirtioState, state); - VirtQueueElement *elem = v->elems[pdu->idx]; + QEMUIOVector qiov_full; if (fidp->fs.xattr.len < off) { read_count = 0; @@ -1656,7 +1681,8 @@ static int v9fs_xattr_read(V9fsState *s, V9fsPDU *pdu, V9fsFidState *fidp, } offset += err; - err = v9fs_pack(elem->in_sg, elem->in_num, offset, + v9fs_init_qiov_from_pdu(&qiov_full, pdu, 0, read_count, false); + err = v9fs_pack(qiov_full.iov, qiov_full.niov, offset, ((char *)fidp->fs.xattr.value) + off, read_count); if (err < 0) { @@ -1732,32 +1758,6 @@ static int coroutine_fn v9fs_do_readdir_with_stat(V9fsPDU *pdu, return count; } -/* - * Create a QEMUIOVector for a sub-region of PDU iovecs - * - * @qiov: uninitialized QEMUIOVector - * @skip: number of bytes to skip from beginning of PDU - * @size: number of bytes to include - * @is_write: true - write, false - read - * - * The resulting QEMUIOVector has heap-allocated iovecs and must be cleaned up - * with qemu_iovec_destroy(). - */ -static void v9fs_init_qiov_from_pdu(QEMUIOVector *qiov, V9fsPDU *pdu, - size_t skip, size_t size, - bool is_write) -{ - QEMUIOVector elem; - struct iovec *iov; - unsigned int niov; - - pdu->s->transport->init_iov_from_pdu(pdu, &iov, &niov, is_write); - - qemu_iovec_init_external(&elem, iov, niov); - qemu_iovec_init(qiov, niov); - qemu_iovec_concat(qiov, &elem, skip, size); -} - static void coroutine_fn v9fs_read(void *opaque) { int32_t fid; -- 1.9.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PATCH 3/4] 9pfs: use v9fs_init_qiov_from_pdu instead of v9fs_pack Date: Mon, 21 Nov 2016 13:39:31 -0800 Message-ID: <1479764372-29470-3-git-send-email-sstabellini@kernel.org> References: <1479764372-29470-1-git-send-email-sstabellini@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1479764372-29470-1-git-send-email-sstabellini@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: aneesh.kumar@linux.vnet.ibm.com Cc: xen-devel@lists.xensource.com, wei.liu2@citrix.com, groug@kaod.org, qemu-devel@nongnu.org, sstabellini@kernel.org, anthony.perard@citrix.com List-Id: xen-devel@lists.xenproject.org djlmc194YXR0cl9yZWFkIHNob3VsZCBub3QgYWNjZXNzIFZpcnRRdWV1ZUVsZW1lbnQgZWxlbXMg ZGlyZWN0bHkuCk1vdmUgdjlmc19pbml0X3Fpb3ZfZnJvbV9wZHUgdXAgaW4gdGhlIGZpbGUgYW5k IGNhbGwKdjlmc19pbml0X3Fpb3ZfZnJvbV9wZHUgaW5zdGVhZCBvZiB2OWZzX3BhY2suCgpTaWdu ZWQtb2ZmLWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Ci0t LQogaHcvOXBmcy85cC5jIHwgNTggKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyks IDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2h3LzlwZnMvOXAuYyBiL2h3LzlwZnMvOXAu YwppbmRleCA1YTIwYTEzLi5iNmVjMDQyIDEwMDY0NAotLS0gYS9ody85cGZzLzlwLmMKKysrIGIv aHcvOXBmcy85cC5jCkBAIC0xNjMzLDE0ICsxNjMzLDM5IEBAIG91dF9ub2ZpZDoKICAgICBwZHVf Y29tcGxldGUocGR1LCBlcnIpOwogfQogCisvKgorICogQ3JlYXRlIGEgUUVNVUlPVmVjdG9yIGZv ciBhIHN1Yi1yZWdpb24gb2YgUERVIGlvdmVjcworICoKKyAqIEBxaW92OiAgICAgICB1bmluaXRp YWxpemVkIFFFTVVJT1ZlY3RvcgorICogQHNraXA6ICAgICAgIG51bWJlciBvZiBieXRlcyB0byBz a2lwIGZyb20gYmVnaW5uaW5nIG9mIFBEVQorICogQHNpemU6ICAgICAgIG51bWJlciBvZiBieXRl cyB0byBpbmNsdWRlCisgKiBAaXNfd3JpdGU6ICAgdHJ1ZSAtIHdyaXRlLCBmYWxzZSAtIHJlYWQK KyAqCisgKiBUaGUgcmVzdWx0aW5nIFFFTVVJT1ZlY3RvciBoYXMgaGVhcC1hbGxvY2F0ZWQgaW92 ZWNzIGFuZCBtdXN0IGJlIGNsZWFuZWQgdXAKKyAqIHdpdGggcWVtdV9pb3ZlY19kZXN0cm95KCku CisgKi8KK3N0YXRpYyB2b2lkIHY5ZnNfaW5pdF9xaW92X2Zyb21fcGR1KFFFTVVJT1ZlY3RvciAq cWlvdiwgVjlmc1BEVSAqcGR1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZV90IHNraXAsIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYm9vbCBpc193cml0ZSkKK3sKKyAgICBRRU1VSU9WZWN0b3IgZWxlbTsKKyAgICBzdHJ1 Y3QgaW92ZWMgKmlvdjsKKyAgICB1bnNpZ25lZCBpbnQgbmlvdjsKKworICAgIHBkdS0+cy0+dHJh bnNwb3J0LT5pbml0X2lvdl9mcm9tX3BkdShwZHUsICZpb3YsICZuaW92LCBpc193cml0ZSk7CisK KyAgICBxZW11X2lvdmVjX2luaXRfZXh0ZXJuYWwoJmVsZW0sIGlvdiwgbmlvdik7CisgICAgcWVt dV9pb3ZlY19pbml0KHFpb3YsIG5pb3YpOworICAgIHFlbXVfaW92ZWNfY29uY2F0KHFpb3YsICZl bGVtLCBza2lwLCBzaXplKTsKK30KKwogc3RhdGljIGludCB2OWZzX3hhdHRyX3JlYWQoVjlmc1N0 YXRlICpzLCBWOWZzUERVICpwZHUsIFY5ZnNGaWRTdGF0ZSAqZmlkcCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQ2NF90IG9mZiwgdWludDMyX3QgbWF4X2NvdW50KQogewogICAgIHNz aXplX3QgZXJyOwogICAgIHNpemVfdCBvZmZzZXQgPSA3OwogICAgIHVpbnQ2NF90IHJlYWRfY291 bnQ7Ci0gICAgVjlmc1ZpcnRpb1N0YXRlICp2ID0gY29udGFpbmVyX29mKHMsIFY5ZnNWaXJ0aW9T dGF0ZSwgc3RhdGUpOwotICAgIFZpcnRRdWV1ZUVsZW1lbnQgKmVsZW0gPSB2LT5lbGVtc1twZHUt PmlkeF07CisgICAgUUVNVUlPVmVjdG9yIHFpb3ZfZnVsbDsKIAogICAgIGlmIChmaWRwLT5mcy54 YXR0ci5sZW4gPCBvZmYpIHsKICAgICAgICAgcmVhZF9jb3VudCA9IDA7CkBAIC0xNjU2LDcgKzE2 ODEsOCBAQCBzdGF0aWMgaW50IHY5ZnNfeGF0dHJfcmVhZChWOWZzU3RhdGUgKnMsIFY5ZnNQRFUg KnBkdSwgVjlmc0ZpZFN0YXRlICpmaWRwLAogICAgIH0KICAgICBvZmZzZXQgKz0gZXJyOwogCi0g ICAgZXJyID0gdjlmc19wYWNrKGVsZW0tPmluX3NnLCBlbGVtLT5pbl9udW0sIG9mZnNldCwKKyAg ICB2OWZzX2luaXRfcWlvdl9mcm9tX3BkdSgmcWlvdl9mdWxsLCBwZHUsIDAsIHJlYWRfY291bnQs IGZhbHNlKTsKKyAgICBlcnIgPSB2OWZzX3BhY2socWlvdl9mdWxsLmlvdiwgcWlvdl9mdWxsLm5p b3YsIG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgKChjaGFyICopZmlkcC0+ZnMueGF0dHIu dmFsdWUpICsgb2ZmLAogICAgICAgICAgICAgICAgICAgICByZWFkX2NvdW50KTsKICAgICBpZiAo ZXJyIDwgMCkgewpAQCAtMTczMiwzMiArMTc1OCw2IEBAIHN0YXRpYyBpbnQgY29yb3V0aW5lX2Zu IHY5ZnNfZG9fcmVhZGRpcl93aXRoX3N0YXQoVjlmc1BEVSAqcGR1LAogICAgIHJldHVybiBjb3Vu dDsKIH0KIAotLyoKLSAqIENyZWF0ZSBhIFFFTVVJT1ZlY3RvciBmb3IgYSBzdWItcmVnaW9uIG9m IFBEVSBpb3ZlY3MKLSAqCi0gKiBAcWlvdjogICAgICAgdW5pbml0aWFsaXplZCBRRU1VSU9WZWN0 b3IKLSAqIEBza2lwOiAgICAgICBudW1iZXIgb2YgYnl0ZXMgdG8gc2tpcCBmcm9tIGJlZ2lubmlu ZyBvZiBQRFUKLSAqIEBzaXplOiAgICAgICBudW1iZXIgb2YgYnl0ZXMgdG8gaW5jbHVkZQotICog QGlzX3dyaXRlOiAgIHRydWUgLSB3cml0ZSwgZmFsc2UgLSByZWFkCi0gKgotICogVGhlIHJlc3Vs dGluZyBRRU1VSU9WZWN0b3IgaGFzIGhlYXAtYWxsb2NhdGVkIGlvdmVjcyBhbmQgbXVzdCBiZSBj bGVhbmVkIHVwCi0gKiB3aXRoIHFlbXVfaW92ZWNfZGVzdHJveSgpLgotICovCi1zdGF0aWMgdm9p ZCB2OWZzX2luaXRfcWlvdl9mcm9tX3BkdShRRU1VSU9WZWN0b3IgKnFpb3YsIFY5ZnNQRFUgKnBk dSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBza2lwLCBzaXpl X3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNfd3Jp dGUpCi17Ci0gICAgUUVNVUlPVmVjdG9yIGVsZW07Ci0gICAgc3RydWN0IGlvdmVjICppb3Y7Ci0g ICAgdW5zaWduZWQgaW50IG5pb3Y7Ci0KLSAgICBwZHUtPnMtPnRyYW5zcG9ydC0+aW5pdF9pb3Zf ZnJvbV9wZHUocGR1LCAmaW92LCAmbmlvdiwgaXNfd3JpdGUpOwotCi0gICAgcWVtdV9pb3ZlY19p bml0X2V4dGVybmFsKCZlbGVtLCBpb3YsIG5pb3YpOwotICAgIHFlbXVfaW92ZWNfaW5pdChxaW92 LCBuaW92KTsKLSAgICBxZW11X2lvdmVjX2NvbmNhdChxaW92LCAmZWxlbSwgc2tpcCwgc2l6ZSk7 Ci19Ci0KIHN0YXRpYyB2b2lkIGNvcm91dGluZV9mbiB2OWZzX3JlYWQodm9pZCAqb3BhcXVlKQog ewogICAgIGludDMyX3QgZmlkOwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK