From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id EDC011B4B6 for ; Thu, 29 Nov 2018 14:22:59 +0100 (CET) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5F84F30DDBD1; Thu, 29 Nov 2018 13:22:59 +0000 (UTC) Received: from ktraynor.remote.csb (ovpn-117-230.ams2.redhat.com [10.36.117.230]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1AB9B1019626; Thu, 29 Nov 2018 13:22:57 +0000 (UTC) From: Kevin Traynor To: Anatoly Burakov Cc: dpdk stable Date: Thu, 29 Nov 2018 13:20:38 +0000 Message-Id: <20181129132128.7609-38-ktraynor@redhat.com> In-Reply-To: <20181129132128.7609-1-ktraynor@redhat.com> References: <20181129132128.7609-1-ktraynor@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.49]); Thu, 29 Nov 2018 13:22:59 +0000 (UTC) Subject: [dpdk-stable] patch 'malloc: fix adjacency check to also include segment list' has been queued to stable release 18.08.1 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: , X-List-Received-Date: Thu, 29 Nov 2018 13:23:00 -0000 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 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 --- 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 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@dpdk.org Signed-off-by: Anatoly Burakov --- @@ -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);