From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f193.google.com (mail-wr0-f193.google.com [209.85.128.193]) by dpdk.org (Postfix) with ESMTP id 798071B287 for ; Mon, 30 Oct 2017 16:37:52 +0100 (CET) Received: by mail-wr0-f193.google.com with SMTP id y39so13066293wrd.4 for ; Mon, 30 Oct 2017 08:37:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=xJ45C9opDlkTkODIUtOKlC4S2KMdp8qIgzOMR/YpbT0=; b=imvgALRJhSIP2m/qGgCyH/juEUe6Y7gdosCx3sMOprf7qhUGPFhgM1kLCl2dHQLkTG v5Hgt9aAgzz6JZoM3z+eEr4qEW/rgKEB8AkDHX6to+JtIBrwnDAQm29J1TWabwpo/94T duQB2V3Tltmkjl4MrioT8nwciImxmMCnIZWEYoJxjrfDkYZKP1JQJivgEGthY9Q58tRe zcJacehzF0zezMUk1vKPgRgGm0uS0Ye0XNERWAiDY7c2DT+yC6P5GyP86JcTUjAVZE3k ZRkUPjSuHDk9I8ys7zfFI6369xZUZeH1NnTAzEZuMx7hYieuJMFPFyYqHwPwFlLOU5j3 FIqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=xJ45C9opDlkTkODIUtOKlC4S2KMdp8qIgzOMR/YpbT0=; b=pA3mmcVU4vVylt+VoAXr3gYWM6JFKt0SqXugYCH2CKAv1lAPa7kUpmRMy+OyQnkJVb xDqnnNu3FYPAzc6vcZU6zfk+jxOUY3YAOZ71ogPxdh/3TaGq9t7Tm414xMlOxjS85ck9 djDcZAh5GYcJ20QKXMQtwHaz2pw/Lt538Vm0ttOT/EhtbJUwG9gvMUKFVydqbsJ91esZ 0qyf4073juWWXYsiin4wX5+NPIg9W8HcVBEqp8KYmSLJfUbaE9JPcFUS1eGETIjdu4wO RU7bnLHWS3+3i9ueGfxDXRJhB5XMAE9VnD4siR6KsOZrPO4w1mWhO6roB0PY60Gxf+D8 xADQ== X-Gm-Message-State: AMCzsaXAH+Bi6Ea8vR7/EOGHmeLllJW4xWf3vNVs7/22L7bJeGIJyKIS wYTyyZgRmUND2RxGpJEH/V2dwMg9y+o= X-Google-Smtp-Source: ABhQp+R3u7/xeigr7yY1e1sD2/g6gB20Abtz/J88cXdz7EHRNE54bf4hxH7jAp74oijNnMfBEa/LGw== X-Received: by 10.223.160.86 with SMTP id l22mr7814799wrl.187.1509377872188; Mon, 30 Oct 2017 08:37:52 -0700 (PDT) Received: from localhost ([2a00:23c5:bef3:400:4a51:b7ff:fe0b:4749]) by smtp.gmail.com with ESMTPSA id a79sm2782518wma.14.2017.10.30.08.37.51 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 30 Oct 2017 08:37:51 -0700 (PDT) From: luca.boccassi@gmail.com To: Xueming Li Cc: Sergio Gonzalez Monroy , dpdk stable Date: Mon, 30 Oct 2017 15:34:43 +0000 Message-Id: <20171030153511.13322-40-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171030153511.13322-1-luca.boccassi@gmail.com> References: <20171030153511.13322-1-luca.boccassi@gmail.com> Subject: [dpdk-stable] patch 'mem: fix malloc element free in debug mode' has been queued to LTS release 16.11.4 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: Mon, 30 Oct 2017 15:37:52 -0000 Hi, FYI, your patch has been queued to LTS release 16.11.4 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/01/17. So please shout if anyone has objections. Thanks. Kind regards, Luca Boccassi --- >>From 98275cc75482e112c45125c1187aff2390dc20a0 Mon Sep 17 00:00:00 2001 From: Xueming Li Date: Sat, 9 Sep 2017 15:33:19 +0800 Subject: [PATCH] mem: fix malloc element free in debug mode [ upstream commit 41baec55a81467d7733217cd6f81a94e2916348c ] malloc_elem_free() is clearing(setting to 0) the trailer cookie when RTE_MALLOC_DEBUG is enabled. In case of joining free neighbor element, part of joined memory is not getting cleared due to missing the length of trailer cookie in the middle. This patch fixes calculation of free memory length to be cleared in malloc_elem_free() by including trailer cookie. Fixes: af75078fece3 ("first public release") Signed-off-by: Xueming Li Acked-by: Sergio Gonzalez Monroy --- lib/librte_eal/common/malloc_elem.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/librte_eal/common/malloc_elem.c b/lib/librte_eal/common/malloc_elem.c index 08516af2b..77a86151b 100644 --- a/lib/librte_eal/common/malloc_elem.c +++ b/lib/librte_eal/common/malloc_elem.c @@ -275,14 +275,14 @@ malloc_elem_free(struct malloc_elem *elem) return -1; rte_spinlock_lock(&(elem->heap->lock)); - size_t sz = elem->size - sizeof(*elem); + size_t sz = elem->size - sizeof(*elem) - MALLOC_ELEM_TRAILER_LEN; uint8_t *ptr = (uint8_t *)&elem[1]; struct malloc_elem *next = RTE_PTR_ADD(elem, elem->size); if (next->state == ELEM_FREE){ /* remove from free list, join to this one */ elem_free_list_remove(next); join_elem(elem, next); - sz += sizeof(*elem); + sz += (sizeof(*elem) + MALLOC_ELEM_TRAILER_LEN); } /* check if previous element is free, if so join with it and return, @@ -291,8 +291,8 @@ malloc_elem_free(struct malloc_elem *elem) if (elem->prev != NULL && elem->prev->state == ELEM_FREE) { elem_free_list_remove(elem->prev); join_elem(elem->prev, elem); - sz += sizeof(*elem); - ptr -= sizeof(*elem); + sz += (sizeof(*elem) + MALLOC_ELEM_TRAILER_LEN); + ptr -= (sizeof(*elem) + MALLOC_ELEM_TRAILER_LEN); elem = elem->prev; } malloc_elem_free_list_insert(elem); -- 2.11.0