From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8E7A0A04F0 for ; Tue, 10 Dec 2019 16:00:40 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 85CA41B13C; Tue, 10 Dec 2019 16:00:40 +0100 (CET) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by dpdk.org (Postfix) with ESMTP id E051E1B13C for ; Tue, 10 Dec 2019 16:00:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1575990037; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mv0XHhfvH+A1g98B6qgYXI76mNceLNygAjDiaFh/u9E=; b=jEveLTtet5HCbesBKjayoB5//3Iyt4ObhzmY/a+Gk3qzIZlmX2KU7V6tjCedfiP2X81Ou3 489lY2pwlVkvbowjiCceb+xtzfPTw3CdFTRH9fWztqAIvRSHv/5NnGCCbxPvlngFslF2V7 tIeB4GeJZrQpwA+Lxd1ZHAA2oGvML7g= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-326--e2X4RYnMYelKGG6by8bzw-1; Tue, 10 Dec 2019 10:00:33 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A5894477; Tue, 10 Dec 2019 15:00:32 +0000 (UTC) Received: from rh.redhat.com (ovpn-116-64.ams2.redhat.com [10.36.116.64]) by smtp.corp.redhat.com (Postfix) with ESMTP id A671C5D9C5; Tue, 10 Dec 2019 15:00:31 +0000 (UTC) From: Kevin Traynor To: Michal Krawczyk Cc: Anatoly Burakov , dpdk stable Date: Tue, 10 Dec 2019 14:58:55 +0000 Message-Id: <20191210145937.32755-21-ktraynor@redhat.com> In-Reply-To: <20191210145937.32755-1-ktraynor@redhat.com> References: <20191210145937.32755-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-MC-Unique: -e2X4RYnMYelKGG6by8bzw-1 X-Mimecast-Spam-Score: 0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Subject: [dpdk-stable] patch 'vfio: fix truncated BAR offset for 32-bit' has been queued to LTS release 18.11.6 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to LTS release 18.11.6 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 12/16/19. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasi= ng (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable-queue This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable-queue/commit/620f94f6c161101afc= 2b826af09185fc34f19ade Thanks. Kevin. --- >From 620f94f6c161101afc2b826af09185fc34f19ade Mon Sep 17 00:00:00 2001 From: Michal Krawczyk Date: Thu, 24 Oct 2019 14:10:46 +0200 Subject: [PATCH] vfio: fix truncated BAR offset for 32-bit [ upstream commit 8108393d982b805ee4911c0d5cdfed53acec5d36 ] When 32-bit application is built on 64-bit system it is possible that the offset of the resource is outside of the 32-bit value. The problem with the unsigned long is, that it is 32-bit and not 64-bit when using armhf compiler. Although the system is returning u64 value, we are losing it's value if it's higher than 32-bit in the conversion process. It can further cause mmap to fail due to offset being 0 or to map not intended memory region. To make it more portable, the uint64_t value is now being used for storing offset instead of unsigned long. The size of being 32-bit seems to be fine as the 32-bit application won't be able to access bigger memory and it is further converted to size_t anyway. But for better readability and to be consistent, it's type was changed to size_t as well. Fixes: 0205f873557c ("vfio: fix overflow of BAR region offset and size") Signed-off-by: Michal Krawczyk Acked-by: Anatoly Burakov --- drivers/bus/pci/linux/pci_vfio.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_v= fio.c index 8e3d43e9c..a3635cfe1 100644 --- a/drivers/bus/pci/linux/pci_vfio.c +++ b/drivers/bus/pci/linux/pci_vfio.c @@ -452,5 +452,6 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_re= source *vfio_res, { =09struct memreg { -=09=09unsigned long offset, size; +=09=09uint64_t offset; +=09=09size_t size; =09} memreg[2] =3D {}; =09void *bar_addr; @@ -488,5 +489,6 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_re= source *vfio_res, =09=09=09"Trying to map BAR%d that contains the MSI-X " =09=09=09"table. Trying offsets: " -=09=09=09"0x%04lx:0x%04lx, 0x%04lx:0x%04lx\n", bar_index, +=09=09=09"0x%04" PRIx64 ":0x%04zx, 0x%04" PRIx64 ":0x%04zx\n", +=09=09=09bar_index, =09=09=09memreg[0].offset, memreg[0].size, =09=09=09memreg[1].offset, memreg[1].size); @@ -513,6 +515,6 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_re= source *vfio_res, =09=09=09&& memreg[1].offset && memreg[1].size) { =09=09=09void *second_addr =3D RTE_PTR_ADD(bar_addr, -=09=09=09=09=09=09=09memreg[1].offset - -=09=09=09=09=09=09=09(uintptr_t)bar->offset); +=09=09=09=09=09=09(uintptr_t)(memreg[1].offset - +=09=09=09=09=09=09bar->offset)); =09=09=09map_addr =3D pci_map_resource(second_addr, =09=09=09=09=09=09=09vfio_dev_fd, --=20 2.21.0 --- Diff of the applied patch vs upstream commit (please double-check if non-= empty: --- --- -=092019-12-10 14:49:40.491384387 +0000 +++ 0021-vfio-fix-truncated-BAR-offset-for-32-bit.patch=092019-12-10 14:49:= 39.014458476 +0000 @@ -1 +1 @@ -From 8108393d982b805ee4911c0d5cdfed53acec5d36 Mon Sep 17 00:00:00 2001 +From 620f94f6c161101afc2b826af09185fc34f19ade Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 8108393d982b805ee4911c0d5cdfed53acec5d36 ] + @@ -23 +24,0 @@ -Cc: stable@dpdk.org @@ -32 +33 @@ -index faf2990a7..b8faa23f8 100644 +index 8e3d43e9c..a3635cfe1 100644 @@ -43 +44 @@ -@@ -505,5 +506,6 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_r= esource *vfio_res, +@@ -488,5 +489,6 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_r= esource *vfio_res, @@ -51 +52 @@ -@@ -530,6 +532,6 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_r= esource *vfio_res, +@@ -513,6 +515,6 @@ pci_vfio_mmap_bar(int vfio_dev_fd, struct mapped_pci_r= esource *vfio_res,