[dpdk-stable] patch 'malloc: fix adjacency check to also include segment list' has been queued to stable release 18.08.1

Kevin Traynor ktraynor at redhat.com
Thu Nov 29 14:20:38 CET 2018


Hi,

FYI, your patch has been queued to stable release 18.08.1

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/08/18. 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. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Kevin Traynor

---
>From d0bf36bcd8d33115c1f4b6a493839f0b45e6b4c5 Mon Sep 17 00:00:00 2001
From: Anatoly Burakov <anatoly.burakov at intel.com>
Date: Wed, 14 Nov 2018 15:00:58 +0000
Subject: [PATCH] malloc: fix adjacency check to also include segment list

[ upstream commit 71aae4b421da9b741d1fb73a190a9facfec555b9 ]

It may so happen that two memory locations may be adjacent in
virtual memory, but belong to different segment lists. With
current code, such segments will be concatenated. Fix the
adjacency checking code to also check if the adjacent malloc
elements belong to the same memseg list.

Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists")

Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
---
 lib/librte_eal/common/malloc_elem.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/librte_eal/common/malloc_elem.c b/lib/librte_eal/common/malloc_elem.c
index e0a8ed15b..d9f1162ef 100644
--- a/lib/librte_eal/common/malloc_elem.c
+++ b/lib/librte_eal/common/malloc_elem.c
@@ -313,5 +313,6 @@ static int
 next_elem_is_adjacent(struct malloc_elem *elem)
 {
-	return elem->next == RTE_PTR_ADD(elem, elem->size);
+	return elem->next == RTE_PTR_ADD(elem, elem->size) &&
+			elem->next->msl == elem->msl;
 }
 
@@ -319,5 +320,6 @@ static int
 prev_elem_is_adjacent(struct malloc_elem *elem)
 {
-	return elem == RTE_PTR_ADD(elem->prev, elem->prev->size);
+	return elem == RTE_PTR_ADD(elem->prev, elem->prev->size) &&
+			elem->prev->msl == elem->msl;
 }
 
-- 
2.19.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2018-11-29 13:11:36.004882486 +0000
+++ 0037-malloc-fix-adjacency-check-to-also-include-segment-l.patch	2018-11-29 13:11:34.000000000 +0000
@@ -1,8 +1,10 @@
-From 71aae4b421da9b741d1fb73a190a9facfec555b9 Mon Sep 17 00:00:00 2001
+From d0bf36bcd8d33115c1f4b6a493839f0b45e6b4c5 Mon Sep 17 00:00:00 2001
 From: Anatoly Burakov <anatoly.burakov at intel.com>
 Date: Wed, 14 Nov 2018 15:00:58 +0000
 Subject: [PATCH] malloc: fix adjacency check to also include segment list
 
+[ upstream commit 71aae4b421da9b741d1fb73a190a9facfec555b9 ]
+
 It may so happen that two memory locations may be adjacent in
 virtual memory, but belong to different segment lists. With
 current code, such segments will be concatenated. Fix the
@@ -10,7 +12,6 @@
 elements belong to the same memseg list.
 
 Fixes: 66cc45e293ed ("mem: replace memseg with memseg lists")
-Cc: stable at dpdk.org
 
 Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
 ---
@@ -18,10 +19,10 @@
  1 file changed, 4 insertions(+), 2 deletions(-)
 
 diff --git a/lib/librte_eal/common/malloc_elem.c b/lib/librte_eal/common/malloc_elem.c
-index 1a74660de..9d3dcb6a9 100644
+index e0a8ed15b..d9f1162ef 100644
 --- a/lib/librte_eal/common/malloc_elem.c
 +++ b/lib/librte_eal/common/malloc_elem.c
-@@ -317,5 +317,6 @@ static int
+@@ -313,5 +313,6 @@ static int
  next_elem_is_adjacent(struct malloc_elem *elem)
  {
 -	return elem->next == RTE_PTR_ADD(elem, elem->size);
@@ -29,7 +30,7 @@
 +			elem->next->msl == elem->msl;
  }
  
-@@ -323,5 +324,6 @@ static int
+@@ -319,5 +320,6 @@ static int
  prev_elem_is_adjacent(struct malloc_elem *elem)
  {
 -	return elem == RTE_PTR_ADD(elem->prev, elem->prev->size);


More information about the stable mailing list