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 A030BA04C0 for ; Sat, 26 Sep 2020 00:42:34 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 339821EA05; Sat, 26 Sep 2020 00:42:28 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 0900E1D5A8 for ; Sat, 26 Sep 2020 00:42:21 +0200 (CEST) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20200925224219euoutp02eddad607f429d359a6e45f10739bc1cc~4KBViBKfL2280822808euoutp02I for ; Fri, 25 Sep 2020 22:42:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20200925224219euoutp02eddad607f429d359a6e45f10739bc1cc~4KBViBKfL2280822808euoutp02I DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1601073739; bh=3rOoWGfAKPTUxVaAwgPgE6cLJTHVpntRfJyEW7gWORE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZZABEmJBtbwDiIHXY/7x7MxsSarImVeqmt0e+nEWxdhsa8+y7grkjfsY3n+33O39L 88RicKGCBcOBqdB2NbPDOYv7xq3hIxLnHt/33juY/KlcLnNpWz2uWSkyLAXYviqEy3 NWJjIDnq7F3oX8Jrfk5onz4N0BvkqZVlhuWoOYfo= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20200925224219eucas1p1ff93ab6b701bc342de304a595c47c809~4KBU6psSS2520225202eucas1p1i; Fri, 25 Sep 2020 22:42:19 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id 4B.6B.06456.B427E6F5; Fri, 25 Sep 2020 23:42:19 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20200925224218eucas1p2383ff0ebdaee18b581f5f731476f05ab~4KBUDpvhP2998529985eucas1p2W; Fri, 25 Sep 2020 22:42:18 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20200925224218eusmtrp2cdbd58d0fe5fc4b3f201be1947ed6617~4KBUDLuAR0483804838eusmtrp2I; Fri, 25 Sep 2020 22:42:18 +0000 (GMT) X-AuditID: cbfec7f2-7efff70000001938-fd-5f6e724be8b6 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 9F.BE.06017.A427E6F5; Fri, 25 Sep 2020 23:42:18 +0100 (BST) Received: from localhost.localdomain (unknown [106.210.88.70]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20200925224217eusmtip2538dbfe93afbb7c900b0f87150ecaa15~4KBTfXotz1081510815eusmtip20; Fri, 25 Sep 2020 22:42:17 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Sat, 26 Sep 2020 00:42:04 +0200 Message-Id: <20200925224209.12173-4-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200925224209.12173-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrBIsWRmVeSWpSXmKPExsWy7djP87reRXnxBlMes1jcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHMUl01Kak5mWWqRvl0CV8aRR8vY C46qVvTeX8/awLhRrouRk0NCwETi5qnZbF2MXBxCAisYJR7sOcwC4XxhlHj89hMjhPOZUaJ3 9xxmmJaFV45DtSxnlFj6tpUVrqrp3A2wKjYBW4kjM7+ygtgiAmESzc17geZycDALOEs8+coG EhYWcJN4f+o5mM0ioCpx/MoxFhCbV8BVonXZH0aIZfISqzccABvJCVT/bd9cZpBdEgKX2SRe 9fyGushFYt+ug+wQtrDEq+NboGwZif875zNBNGxjlLj6+ycjhLOfUeJ67wqoKmuJw/9+s0Fc pymxfpc+RNhR4vmhqUwgYQkBPokbbwVBwsxA5qRt05khwrwSHW1CENV6Ek97pjLCrP2z9gkL hO0hcWBGOzRIrzJKtH/4yTqBUX4WwrIFjIyrGMVTS4tz01OLDfNSy/WKE3OLS/PS9ZLzczcx AuP/9L/jn3Ywfr2UdIhRgINRiYf3xKPceCHWxLLiytxDjBIczEoivE5nT8cJ8aYkVlalFuXH F5XmpBYfYpTmYFES5zVe9DJWSCA9sSQ1OzW1ILUIJsvEwSnVwJgsZvN5oWDDfzajD63srjOr fU/n1qZcWO1SHZY9N1b9vrbPrSC5ej83+6aOLyucl33nvnfOvHu+s8qO83MCnq4J+Mfpuajj /fuf97Ze5T99YdF6m7xZp2uXrm76KfQnZ8Yt90kfJu3KWuEgkNltabW1fWlFo7HN3m3zsiw4 PWax8BvaGtin7VViKc5INNRiLipOBAA8Sa1B+wIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrBLMWRmVeSWpSXmKPExsVy+t/xe7peRXnxBp92cVncWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHOUnk1RfmlJqkJGfnGJrVK0oYWR nqGlhZ6RiaWeobF5rJWRqZK+nU1Kak5mWWqRvl2CXsaRR8vYC46qVvTeX8/awLhRrouRk0NC wERi4ZXjbF2MXBxCAksZJSb+3wTkcAAlZCQ+XBKAqBGW+HOtC6rmI6PEmkPrGEESbAK2Ekdm fmUFqRcRCJM4sdIfJMws4C6xZfFUZhBbWMBN4v2p52wgNouAqsTxK8dYQGxeAVeJ1mV/GCHm y0us3nAArJ4TqP7bvrnMELsaGSV63vSxTmDkW8DIsIpRJLW0ODc9t9hIrzgxt7g0L10vOT93 EyMwFLcd+7llB2PXu+BDjAIcjEo8vApPc+OFWBPLiitzDzFKcDArifA6nT0dJ8SbklhZlVqU H19UmpNafIjRFOiqicxSosn5wDjJK4k3NDU0t7A0NDc2NzazUBLn7RA4GCMkkJ5YkpqdmlqQ WgTTx8TBKdXAuPLNcaPevdl7gq5pXNn82zpV8HxqlnJumsOH7csDD5u2Kdq/9THJ9ur5/Fni zbJ3aS+63jWqPt2wJvrc1+PJP+d/f6V9xrBZPb3llFBsQvg/z6TH6w4ZfwqJLZqok8O0sl97 u86Px/lPdzE4Cy9KFuGI0fv0JruTNXdqscGmp2LKGj267pvZlViKMxINtZiLihMBaW9tEVsC AAA= X-CMS-MailID: 20200925224218eucas1p2383ff0ebdaee18b581f5f731476f05ab X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20200925224218eucas1p2383ff0ebdaee18b581f5f731476f05ab X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20200925224218eucas1p2383ff0ebdaee18b581f5f731476f05ab References: <20200923132541.21417-1-l.wojciechow@partner.samsung.com> <20200925224209.12173-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-stable] [PATCH v4 3/8] distributor: do not use oldpkt when not needed 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" rte_distributor_request_pkt and rte_distributor_get_pkt dereferenced oldpkt parameter when in RTE_DIST_ALG_SINGLE even if number of returned buffers from worker to distributor was 0. This patch passes NULL to the legacy API when number of returned buffers is 0. This allows passing NULL as oldpkt parameter. Distribor tests were also updated passing NULL as oldpkt and 0 as number of returned packets, where packets are not returned. Fixes: 775003ad2f96 ("distributor: add new burst-capable library") Cc: david.hunt@intel.com Cc: stable@dpdk.org Signed-off-by: Lukasz Wojciechowski --- app/test/test_distributor.c | 28 +++++++++--------------- lib/librte_distributor/rte_distributor.c | 4 ++-- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c index 0e49e3714..0e3ab0c4f 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -65,13 +65,10 @@ handle_work(void *arg) struct rte_mbuf *buf[8] __rte_cache_aligned; struct worker_params *wp = arg; struct rte_distributor *db = wp->dist; - unsigned int count = 0, num = 0; + unsigned int count = 0, num; unsigned int id = __atomic_fetch_add(&worker_idx, 1, __ATOMIC_RELAXED); - int i; - for (i = 0; i < 8; i++) - buf[i] = NULL; - num = rte_distributor_get_pkt(db, id, buf, buf, num); + num = rte_distributor_get_pkt(db, id, buf, NULL, 0); while (!quit) { __atomic_fetch_add(&worker_stats[id].handled_packets, num, __ATOMIC_ACQ_REL); @@ -279,20 +276,17 @@ handle_work_with_free_mbufs(void *arg) struct rte_distributor *d = wp->dist; unsigned int count = 0; unsigned int i; - unsigned int num = 0; + unsigned int num; unsigned int id = __atomic_fetch_add(&worker_idx, 1, __ATOMIC_RELAXED); - for (i = 0; i < 8; i++) - buf[i] = NULL; - num = rte_distributor_get_pkt(d, id, buf, buf, num); + num = rte_distributor_get_pkt(d, id, buf, NULL, 0); while (!quit) { count += num; __atomic_fetch_add(&worker_stats[id].handled_packets, num, __ATOMIC_ACQ_REL); for (i = 0; i < num; i++) rte_pktmbuf_free(buf[i]); - num = rte_distributor_get_pkt(d, - id, buf, buf, num); + num = rte_distributor_get_pkt(d, id, buf, NULL, 0); } count += num; __atomic_fetch_add(&worker_stats[id].handled_packets, num, @@ -351,7 +345,7 @@ handle_work_for_shutdown_test(void *arg) struct worker_params *wp = arg; struct rte_distributor *d = wp->dist; unsigned int count = 0; - unsigned int num = 0; + unsigned int num; unsigned int total = 0; unsigned int i; unsigned int returned = 0; @@ -359,7 +353,7 @@ handle_work_for_shutdown_test(void *arg) const unsigned int id = __atomic_fetch_add(&worker_idx, 1, __ATOMIC_RELAXED); - num = rte_distributor_get_pkt(d, id, buf, buf, num); + num = rte_distributor_get_pkt(d, id, buf, NULL, 0); zero_id = __atomic_load_n(&zero_idx, __ATOMIC_ACQUIRE); if (id == zero_id && num > 0) { @@ -376,8 +370,7 @@ handle_work_for_shutdown_test(void *arg) __ATOMIC_ACQ_REL); for (i = 0; i < num; i++) rte_pktmbuf_free(buf[i]); - num = rte_distributor_get_pkt(d, - id, buf, buf, num); + num = rte_distributor_get_pkt(d, id, buf, NULL, 0); zero_id = __atomic_load_n(&zero_idx, __ATOMIC_ACQUIRE); if (id == zero_id && num > 0) { @@ -400,13 +393,12 @@ handle_work_for_shutdown_test(void *arg) while (zero_quit) usleep(100); - num = rte_distributor_get_pkt(d, - id, buf, buf, num); + num = rte_distributor_get_pkt(d, id, buf, NULL, 0); while (!quit) { count += num; rte_pktmbuf_free(pkt); - num = rte_distributor_get_pkt(d, id, buf, buf, num); + num = rte_distributor_get_pkt(d, id, buf, NULL, 0); __atomic_fetch_add(&worker_stats[id].handled_packets, num, __ATOMIC_ACQ_REL); } diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c index 1c047f065..8a12bf856 100644 --- a/lib/librte_distributor/rte_distributor.c +++ b/lib/librte_distributor/rte_distributor.c @@ -42,7 +42,7 @@ rte_distributor_request_pkt(struct rte_distributor *d, if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) { rte_distributor_request_pkt_single(d->d_single, - worker_id, oldpkt[0]); + worker_id, count ? oldpkt[0] : NULL); return; } @@ -134,7 +134,7 @@ rte_distributor_get_pkt(struct rte_distributor *d, if (unlikely(d->alg_type == RTE_DIST_ALG_SINGLE)) { if (return_count <= 1) { pkts[0] = rte_distributor_get_pkt_single(d->d_single, - worker_id, oldpkt[0]); + worker_id, return_count ? oldpkt[0] : NULL); return (pkts[0]) ? 1 : 0; } else return -EINVAL; -- 2.17.1