From nobody Sat Sep 21 05:40:38 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1705109345; cv=none; d=zohomail.com; s=zohoarc; b=mZXtee/xhlQWpP28WGvn3CKaoqcgCqzXXrehwoBRg59RYUL+1ZjCAZqoi+j7nrOvBxD3VavSL6kK3up523zN+JbFW/mM/XimXfp2Uu3WLzyeNNApdls3bvD67QHC8DXLyDaImktoszI+gvGGnqhO66UaHsHF+Q+AbnSQUxRoYm4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1705109345; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ryL8zYr1fmCshYf9TkhZqXBOwBlQnctnbRgGcnkpfDk=; b=H2g2iIY6ggsZv9SUaaHeTRXqtYhxGxhch2puOEoe+NlTPVHqQ7LOezQ6IiIBgllez1ZTZNFivYkT8HnBwyh5NG+9E4WWI2ZvohukP/8BBpgL2AtPws2MnHXElqw6Et9zqfpClv6iJPP7D02zC/Uk7WxVutRJeo1Mb5fIBTzdGvg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1705109345754706.5572851812054; Fri, 12 Jan 2024 17:29:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rOSp8-00069k-Bx; Fri, 12 Jan 2024 20:28:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rOSp3-00069S-Vb for qemu-devel@nongnu.org; Fri, 12 Jan 2024 20:28:30 -0500 Received: from mail-lf1-x130.google.com ([2a00:1450:4864:20::130]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rOSp2-0007aN-CB for qemu-devel@nongnu.org; Fri, 12 Jan 2024 20:28:29 -0500 Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-50e5a9bcec9so8650980e87.3 for ; Fri, 12 Jan 2024 17:28:27 -0800 (PST) Received: from pc7.local (95-24-165-64.broadband.corbina.ru. [95.24.165.64]) by smtp.gmail.com with ESMTPSA id d2-20020ac24c82000000b0050eab0f6a59sm669871lfl.84.2024.01.12.17.28.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jan 2024 17:28:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705109306; x=1705714106; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ryL8zYr1fmCshYf9TkhZqXBOwBlQnctnbRgGcnkpfDk=; b=J83fuP7oyfSdGh+4n727Lfo8hJ4e+gVqN6uaKXZ8kObQpzFwetpbf4TPFU8kw7yuSs ubKeSeV3CjKrC5ita9JS+zdoCzykxFFdF8qnfif7+YRQqLlCfU9+sKsaqi4iPI4EXMTG XfLwfcQoH48gQHv7LAYpv7ew/HBvbw/xXAEt/UnO7KBcpDx8e6S2FBQLw+bUTAL9aC/r gggerM6Otsqd26jY4qP9Iu2kF4dU7dairN+XH6bGgypMDPDfUVZDFlIVI9Nd8uGxzim1 enr/93Ay1fmxnudS/VskcXNjrWB8jC0arTnc5fG0o1m6CqpUWQ4c7SZALJpHiBjjA8Ya nchw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705109306; x=1705714106; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ryL8zYr1fmCshYf9TkhZqXBOwBlQnctnbRgGcnkpfDk=; b=aszGf49b8qB9WcDiEl01NvsA3ixgWYNnPx5AnLe96xW+29s0BAdmx3o+RSHbJFUoL9 t6/Foi0ModHvCQI1uK0HcWcNBJBn6H6rtayDQjLtbuHeIn+xIEyKxJEeUbkrLMstO2Ct g6NPNC21hY/5kSqZje2oFkyQs340CX41jTX0zLywugpr8neDbVop1aCOGywEHBThCdAf ElugdUFjrfTIfiwWiekttwBjraIWZQ+vdZsDDKw+gK+o4F5vR3FOPl8oOUS0WEmHCZtU FgvbkubTMltZ4UFe6zcE6bLC74mA1cEt1X94rCemlkAAqeyZXx9ZQ6pJSSv49T29m2gP fmAA== X-Gm-Message-State: AOJu0YzMR/75EK8mIjCFaCiHkdstELNH5EwX+nXvAqF9VOVJ7+Xg+z2m 6KIysLWAwqb3q/epSwisH+FovpZhvDV5Escklug= X-Google-Smtp-Source: AGHT+IGjd/ridfkC3uIDr4GYRSOEwrf56vXQf/kJcPoIYoLfE/OaZGZhjYjEAN6MlGZrmD/xgbP5VA== X-Received: by 2002:a05:6512:3c3:b0:50e:50ee:f378 with SMTP id w3-20020a05651203c300b0050e50eef378mr1028351lfp.65.1705109306035; Fri, 12 Jan 2024 17:28:26 -0800 (PST) From: Temir Zharaspayev To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , Xie Yongji , Temir Zharaspayev Subject: [PATCH 1/2] libvhost-user: Fix pointer arithmetic in indirect read Date: Sat, 13 Jan 2024 04:27:40 +0300 Message-Id: <20240113012741.54664-2-masscry@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240113012741.54664-1-masscry@gmail.com> References: <20240113012741.54664-1-masscry@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::130; envelope-from=masscry@gmail.com; helo=mail-lf1-x130.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1705109346527100006 Content-Type: text/plain; charset="utf-8" When zero-copy usage of indirect descriptors buffer table isn't possible, library gather scattered memory chunks in a local copy. This commit fixes the issue with pointer arithmetic for the local copy buffer. Signed-off-by: Temir Zharaspayev --- subprojects/libvhost-user/libvhost-user.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvho= st-user/libvhost-user.c index 6684057370..e952c098a3 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -2307,7 +2307,7 @@ static int virtqueue_read_indirect_desc(VuDev *dev, struct vring_desc *desc, uint64_t addr, size_t len) { - struct vring_desc *ori_desc; + uint8_t *src_cursor, *dst_cursor; uint64_t read_len; =20 if (len > (VIRTQUEUE_MAX_SIZE * sizeof(struct vring_desc))) { @@ -2318,17 +2318,18 @@ virtqueue_read_indirect_desc(VuDev *dev, struct vri= ng_desc *desc, return -1; } =20 + dst_cursor =3D (uint8_t *) desc; while (len) { read_len =3D len; - ori_desc =3D vu_gpa_to_va(dev, &read_len, addr); - if (!ori_desc) { + src_cursor =3D vu_gpa_to_va(dev, &read_len, addr); + if (!src_cursor) { return -1; } =20 - memcpy(desc, ori_desc, read_len); + memcpy(dst_cursor, src_cursor, read_len); len -=3D read_len; addr +=3D read_len; - desc +=3D read_len; + dst_cursor +=3D read_len; } =20 return 0; --=20 2.34.1 From nobody Sat Sep 21 05:40:38 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1705109345; cv=none; d=zohomail.com; s=zohoarc; b=AlAuhT/dqomv1d8gYqkjL0/J7Quj09x+jnPho9p4MqzdgTGNnZByG7FMJf8jAI/L2O0GGVy1UCjGij1n3RwMF5X6zTEF24aiKdtjhHhwh8gp2tgF5xSMevJnnUMu5tA3qcwPu/yGOCxqHg1wqevTvOfCDRLQvPpJHGI17Y6llTI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1705109345; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OwDL3ncThkJ8lqlwFLwDxgUkxyiHEPohNrjP4DVlXY8=; b=acLYydCx0ph46GuvFU52/iNEEPf9ePC/rtxR5nuyQwrXb1hGb6Pdy/Pje4H/ot4v3suFBFNILcj47W0UYTtV9T2M1EYKbcnrWA9FuzH6DHHFud0vfObMPHdRkinKzbOt0tenVDeFy9VDQ1vDqjWa5T83KB7k1jZY5oI/dCrlU84= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1705109345615636.1716127248354; Fri, 12 Jan 2024 17:29:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rOSpA-0006A7-Aa; Fri, 12 Jan 2024 20:28:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rOSp6-00069a-1t for qemu-devel@nongnu.org; Fri, 12 Jan 2024 20:28:32 -0500 Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rOSp4-0007bG-Dl for qemu-devel@nongnu.org; Fri, 12 Jan 2024 20:28:31 -0500 Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-50e7e55c0f6so8574277e87.0 for ; Fri, 12 Jan 2024 17:28:30 -0800 (PST) Received: from pc7.local (95-24-165-64.broadband.corbina.ru. [95.24.165.64]) by smtp.gmail.com with ESMTPSA id d2-20020ac24c82000000b0050eab0f6a59sm669871lfl.84.2024.01.12.17.28.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jan 2024 17:28:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705109308; x=1705714108; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OwDL3ncThkJ8lqlwFLwDxgUkxyiHEPohNrjP4DVlXY8=; b=bhU1ejoPq/MkXGLpV0965mH1HFMEnfUmDJVWYDcE1W0lcgGu0DgtIvXW+Ld+HM5jye FHgfLNyxKInI4h1Rf/9denUDtqQ6isEgl45USr/ijt42KK95gLmz1hBKuygzYmfIAita ujaBYaKCth5PCwWFWM5O5Yzzx6KDkZKCGx5Citu3+iDgkLnomfbdMblvBMY4fmIG29vg oRViJBGi4qxHYHdMG6KAAq+KulrskkIpJKiRgV2VH0Do7z+xX/JRPbFGEFknfo2n3VHn D1//u5C6lygcPI1EAWXACreevIM6fTlgxxIoHJznwiQvTS9KdF3TLRk0B3GHHN4abHUz /0Fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705109308; x=1705714108; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OwDL3ncThkJ8lqlwFLwDxgUkxyiHEPohNrjP4DVlXY8=; b=W2XD5fF26SFsHrWz4bwVYSqFt8f572m0RJmd+LH/xV8yqr7A2S0qLsXlMALretw2rQ BDxjvAMQ0RhqbWVM9heZBcSeH+xhat0fwztvY3WCy0YStXFDtN5pq4VwK8X16Ap8Sm7l 14xgHKjA5hHB3Xl1MrSRbB+kS9Ivo/BZ+yEXUDdkVjXcw26xNgDTQ3qDvr8e6Gxj5ABA v2BgLhOxWm/hFsL7RKn1vPhS80so4x315iJK5TkDLa0LzWLfyMERamfG7eNdKARUoV0p bC+oEyHiT7hTrxInQGlBo0fjE2y3XwRjWXYXdrX/9svLQy1TmOPIrfBxFGOeO960YxPt tN5Q== X-Gm-Message-State: AOJu0YwqZ8yijl3RGozFIYG57O3teBwq2/1LCpUcoP7udiQkKpkIyR2w nrlOyUtfhzVLid3P9GHKVAEwl5wp0FMxzfIzYGw= X-Google-Smtp-Source: AGHT+IFoJArofEi2TKw2mXCujhJY2t1XINC//jMpkFAQIOUeMmAYOdp76qvrLUzupaQLILyH6QM8RA== X-Received: by 2002:ac2:5a01:0:b0:50e:7736:a96c with SMTP id q1-20020ac25a01000000b0050e7736a96cmr442441lfn.172.1705109308374; Fri, 12 Jan 2024 17:28:28 -0800 (PST) From: Temir Zharaspayev To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , Xie Yongji , Temir Zharaspayev Subject: [PATCH 2/2] libvduse: Fix pointer arithmetic in indirect read Date: Sat, 13 Jan 2024 04:27:41 +0300 Message-Id: <20240113012741.54664-3-masscry@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240113012741.54664-1-masscry@gmail.com> References: <20240113012741.54664-1-masscry@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::135; envelope-from=masscry@gmail.com; helo=mail-lf1-x135.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1705109346524100005 Content-Type: text/plain; charset="utf-8" When zero-copy usage of indirect descriptors buffer table isn't possible, library gather scattered memory chunks in a local copy. This commit fixes the issue with pointer arithmetic for the local copy buffer. Signed-off-by: Temir Zharaspayev --- subprojects/libvduse/libvduse.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/subprojects/libvduse/libvduse.c b/subprojects/libvduse/libvdus= e.c index 21ffbb5b8d..0b445fbc76 100644 --- a/subprojects/libvduse/libvduse.c +++ b/subprojects/libvduse/libvduse.c @@ -465,7 +465,7 @@ static int vduse_queue_read_indirect_desc(VduseDev *dev, struct vring_desc *desc, uint64_t addr, size_t len) { - struct vring_desc *ori_desc; + uint8_t *src_cursor, *dst_cursor; uint64_t read_len; =20 if (len > (VIRTQUEUE_MAX_SIZE * sizeof(struct vring_desc))) { @@ -476,17 +476,18 @@ vduse_queue_read_indirect_desc(VduseDev *dev, struct = vring_desc *desc, return -1; } =20 + dst_cursor =3D (uint8_t *) desc; while (len) { read_len =3D len; - ori_desc =3D iova_to_va(dev, &read_len, addr); - if (!ori_desc) { + src_cursor =3D iova_to_va(dev, &read_len, addr); + if (!src_cursor) { return -1; } =20 - memcpy(desc, ori_desc, read_len); + memcpy(dst_cursor, src_cursor, read_len); len -=3D read_len; addr +=3D read_len; - desc +=3D read_len; + dst_cursor +=3D read_len; } =20 return 0; --=20 2.34.1