From: Chaitanya Babu Talluri <tallurix.chaitanya.babu@intel.com>
To: dev@dpdk.org
Cc: reshma.pattan@intel.com, jananeex.m.parthasarathy@intel.com,
anatoly.burakov@intel.com,
Chaitanya Babu Talluri <tallurix.chaitanya.babu@intel.com>,
stable@dpdk.org
Subject: [dpdk-dev] [PATCH v2 2/3] lib/eal: fix vfio unmap that succeeds unexpectedly
Date: Thu, 22 Aug 2019 12:53:55 +0100 [thread overview]
Message-ID: <1566474836-30480-3-git-send-email-tallurix.chaitanya.babu@intel.com> (raw)
In-Reply-To: <1566392575-7965-1-git-send-email-tallurix.chaitanya.babu@intel.com>
Unmapping page with a VA that is found in the list
of current mappings will succeed even if the IOVA
for the chunk that is being unmapped,is mismatched.
Fix it by checking if IOVA address matches the
expected IOVA address exactly.
Fixes: 73a6390859 ("vfio: allow to map other memory regions")
Cc: stable@dpdk.org
Signed-off-by: Chaitanya Babu Talluri <tallurix.chaitanya.babu@intel.com>
---
lib/librte_eal/linux/eal/eal_vfio.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/lib/librte_eal/linux/eal/eal_vfio.c b/lib/librte_eal/linux/eal/eal_vfio.c
index 104912077..04c284cb2 100644
--- a/lib/librte_eal/linux/eal/eal_vfio.c
+++ b/lib/librte_eal/linux/eal/eal_vfio.c
@@ -184,13 +184,13 @@ find_user_mem_map(struct user_mem_maps *user_mem_maps, uint64_t addr,
uint64_t iova, uint64_t len)
{
uint64_t va_end = addr + len;
- uint64_t iova_end = iova + len;
int i;
for (i = 0; i < user_mem_maps->n_maps; i++) {
struct user_mem_map *map = &user_mem_maps->maps[i];
uint64_t map_va_end = map->addr + map->len;
- uint64_t map_iova_end = map->iova + map->len;
+ uint64_t diff_addr_len = addr - map->addr;
+ uint64_t expected_iova = map->iova + diff_addr_len;
/* check start VA */
if (addr < map->addr || addr >= map_va_end)
@@ -199,11 +199,10 @@ find_user_mem_map(struct user_mem_maps *user_mem_maps, uint64_t addr,
if (va_end <= map->addr || va_end > map_va_end)
continue;
- /* check start IOVA */
- if (iova < map->iova || iova >= map_iova_end)
- continue;
- /* check if IOVA end is within boundaries */
- if (iova_end <= map->iova || iova_end > map_iova_end)
+ /* check whether user input iova is in sync with
+ * user_mem_map entry's iova
+ */
+ if (expected_iova != iova)
continue;
/* we've found our map */
--
2.17.2
next prev parent reply other threads:[~2019-08-22 11:55 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-21 13:02 [dpdk-dev] [PATCH 0/3] add unit tests for eal vfio library Chaitanya Babu Talluri
2019-08-21 13:02 ` [dpdk-dev] [PATCH 1/3] lib/eal: fix vfio unmap that fails unexpectedly Chaitanya Babu Talluri
2019-08-21 13:20 ` Burakov, Anatoly
2019-08-21 13:02 ` [dpdk-dev] [PATCH 2/3] lib/eal: fix vfio unmap that succeeds unexpectedly Chaitanya Babu Talluri
2019-08-21 13:24 ` Burakov, Anatoly
2019-08-21 13:02 ` [dpdk-dev] [PATCH 3/3] app/test: add unit tests for eal vfio Chaitanya Babu Talluri
2019-08-21 15:44 ` Aaron Conole
2019-08-22 7:18 ` Chaitanya Babu, TalluriX
2019-08-22 10:57 ` Burakov, Anatoly
2019-08-22 14:40 ` Aaron Conole
2019-08-22 11:53 ` [dpdk-dev] [PATCH v2 0/3] add unit tests for eal vfio library Chaitanya Babu Talluri
2019-08-27 11:57 ` [dpdk-dev] [PATCH v3 0/4] " Chaitanya Babu Talluri
2019-09-04 12:04 ` [dpdk-dev] [PATCH v4 " Chaitanya Babu Talluri
2019-09-23 15:56 ` Burakov, Anatoly
2023-06-14 19:37 ` Stephen Hemminger
2019-09-04 12:04 ` [dpdk-dev] [PATCH v4 1/4] lib/eal: fix vfio unmap that fails unexpectedly Chaitanya Babu Talluri
2019-09-04 12:04 ` [dpdk-dev] [PATCH v4 2/4] lib/eal: fix vfio unmap that succeeds unexpectedly Chaitanya Babu Talluri
2019-09-04 12:04 ` [dpdk-dev] [PATCH v4 3/4] lib/eal: add API to check iommu type is set Chaitanya Babu Talluri
2019-09-04 12:04 ` [dpdk-dev] [PATCH v4 4/4] app/test: add unit tests for eal vfio Chaitanya Babu Talluri
2019-08-27 11:57 ` [dpdk-dev] [PATCH v3 1/4] lib/eal: fix vfio unmap that fails unexpectedly Chaitanya Babu Talluri
2019-08-27 11:57 ` [dpdk-dev] [PATCH v3 2/4] lib/eal: fix vfio unmap that succeeds unexpectedly Chaitanya Babu Talluri
2019-08-27 11:57 ` [dpdk-dev] [PATCH v3 3/4] lib/eal: add API to check iommu type is set Chaitanya Babu Talluri
2019-08-27 11:57 ` [dpdk-dev] [PATCH v3 4/4] app/test: add unit tests for eal vfio Chaitanya Babu Talluri
2019-08-22 11:53 ` [dpdk-dev] [PATCH v2 1/3] lib/eal: fix vfio unmap that fails unexpectedly Chaitanya Babu Talluri
2019-08-22 11:53 ` Chaitanya Babu Talluri [this message]
2019-08-22 11:53 ` [dpdk-dev] [PATCH v2 3/3] app/test: add unit tests for eal vfio Chaitanya Babu Talluri
2019-08-22 12:15 ` Burakov, Anatoly
2019-08-23 7:57 ` Chaitanya Babu, TalluriX
2019-08-23 9:12 ` Burakov, Anatoly
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1566474836-30480-3-git-send-email-tallurix.chaitanya.babu@intel.com \
--to=tallurix.chaitanya.babu@intel.com \
--cc=anatoly.burakov@intel.com \
--cc=dev@dpdk.org \
--cc=jananeex.m.parthasarathy@intel.com \
--cc=reshma.pattan@intel.com \
--cc=stable@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).