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 2492AA04BC for ; Thu, 8 Oct 2020 07:23:57 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A12221B677; Thu, 8 Oct 2020 07:23:51 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id B22511B686 for ; Thu, 8 Oct 2020 07:23:40 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20201008052339euoutp02fad261dd16d2ccb4af15348cb0cd1d9e~77PKuwqbL0628306283euoutp02C for ; Thu, 8 Oct 2020 05:23:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20201008052339euoutp02fad261dd16d2ccb4af15348cb0cd1d9e~77PKuwqbL0628306283euoutp02C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1602134619; bh=lhQ/D+SY7TOKzAV9BiJtJFcrM6bI5dfm+5iI6rDO14c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=r2FYzb/YoiIopJ11jhGoDfv3NbsRM9e9a5fD+o6bVGGmaaC6t+aDkuEgvqvAaRaFl 3igqjylzY/zwYaJfaQLBhwGveEYLgJ/w9bNiZJi/VpzAxG9qW/WjcKOJV1zvS69zPX fLhpOlQ49cjWc2qDITXtQVmEyObNuAV16T4bJKzY= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20201008052339eucas1p191b68071c651775da7895f0c9955bbda~77PKiLPNe1098510985eucas1p1N; Thu, 8 Oct 2020 05:23:39 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id BD.9D.06318.B52AE7F5; Thu, 8 Oct 2020 06:23:39 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20201008052339eucas1p1a4e571cc3f5a277badff9d352ad7da8e~77PKReoho1294612946eucas1p1B; Thu, 8 Oct 2020 05:23:38 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20201008052338eusmtrp15bb73002c8d57d2c926ab664e5b32e53~77PKKmkVF2941529415eusmtrp1Q; Thu, 8 Oct 2020 05:23:38 +0000 (GMT) X-AuditID: cbfec7f5-371ff700000018ae-a6-5f7ea25b43ef Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 0C.F0.06017.A52AE7F5; Thu, 8 Oct 2020 06:23:38 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20201008052338eusmtip16443939cea5066143ec1f3da2b43fc06~77PJeKsFP2964029640eusmtip1e; Thu, 8 Oct 2020 05:23:38 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Thu, 8 Oct 2020 07:23:11 +0200 Message-Id: <20201008052323.11547-4-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201008052323.11547-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrCIsWRmVeSWpSXmKPExsWy7djPc7rRi+riDeYd57W4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoLpuU1JzMstQifbsErowJyzYw F2xWqdi17AdzA+My2S5GDg4JAROJhtUuXYxcHEICKxglFm7bzQLhfAFyJtxmg3A+M0r8uPGK DaZjX38eRHw5o8TRZTeZIZxPjBJbDpxl6mLk5GATsJU4MvMrK4gtIhAm0dy8lwWkmVnAWeLJ VzaQsLCAh8SsW2+YQWwWAVWJNytmgJXzCrhKdC5+DmZLCMhLrN5wAKyGU8BN4uz/u1Dxy2wS fcs0IGwXibOTrzJB2MISr45vYYewZSROT+4B+0ZCYBujxNXfPxkhnP2MEtd7V0BVWUsc/veb DeI4TYn1u/Qhwo4SjTu+sEI8zCdx460gSJgZyJy0bTozRJhXoqNNCKJaT+Jpz1RGmLV/1j5h gSjxkFj4rhASOlcZJZbN7GGfwCg/C2HXAkbGVYziqaXFuempxcZ5qeV6xYm5xaV56XrJ+bmb GIFxf/rf8a87GPf9STrEKMDBqMTDa3C0Nl6INbGsuDL3EKMEB7OSCK/T2dNxQrwpiZVVqUX5 8UWlOanFhxilOViUxHmNF72MFRJITyxJzU5NLUgtgskycXBKNTBWb7+sq1Y5+fGfqIzb7VXT ira+NHXd4FIvL+KUKnjShv/CyWszLnBwCKYGvUyy8bhz8oK1u72axfG1+vdOCtdU7T89+28O E6NLwc7bXo2FKZnJsnmCAVvrJF+E+GkKBN9u/V14c6fZq7RjfwOYxZuD7PW84xgdsrOU1s/m jX5i5LxMhS1aR4mlOCPRUIu5qDgRAEXFf4n3AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOLMWRmVeSWpSXmKPExsVy+t/xu7pRi+riDVatNbS4screom/SRyaL d5+2M1k861nHaPGv4w+7A6vHrwVLWT0W73nJ5HHw3R6mAOYoPZui/NKSVIWM/OISW6VoQwsj PUNLCz0jE0s9Q2PzWCsjUyV9O5uU1JzMstQifbsEvYwJyzYwF2xWqdi17AdzA+My2S5GDg4J AROJff15XYxcHEICSxklZr08ywwRl5H4cEmgi5ETyBSW+HOtiw2i5gOjxJe36xhBEmwCthJH Zn5lBakXEQiTOLHSHyTMLOAusWXxVGYQW1jAQ2LWrTdgNouAqsSbFTNYQWxeAVeJzsXPWSHm y0us3nAArIZTwE3i7P+7rBC7Ghklbp6fyTaBkW8BI8MqRpHU0uLc9NxiI73ixNzi0rx0veT8 3E2MwEDcduznlh2MXe+CDzEKcDAq8fAaHK2NF2JNLCuuzD3EKMHBrCTC63T2dJwQb0piZVVq UX58UWlOavEhRlOgqyYyS4km5wOjJK8k3tDU0NzC0tDc2NzYzEJJnLdD4GCMkEB6Yklqdmpq QWoRTB8TB6dUA2Omz+tFLR+MHE6c93i8yyTkRvYE0V2LT6syXrCqzYwyNzT/mhGzQr4qbm3f 1T6d7TLsf6pTBUQzbpzmP5XC0NOjyhV6eUbD4pKvSl5C9k38Gln5cyRvLg4VXBHFut6z8u+r 3ztkwjIaNr5veCPGaZVxZ27tFpWTxa6pX36v2uVzu6Fr6h1mKSWW4oxEQy3mouJEAE3phbBa AgAA X-CMS-MailID: 20201008052339eucas1p1a4e571cc3f5a277badff9d352ad7da8e X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20201008052339eucas1p1a4e571cc3f5a277badff9d352ad7da8e X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20201008052339eucas1p1a4e571cc3f5a277badff9d352ad7da8e References: <20200925224209.12173-1-l.wojciechow@partner.samsung.com> <20201008052323.11547-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-stable] [PATCH v5 03/15] 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. Distributor tests are 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 ba1f81cf8..52230d250 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -62,13 +62,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_RELAXED); @@ -272,19 +269,16 @@ 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) { worker_stats[id].handled_packets += num; count += num; 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); } worker_stats[id].handled_packets += num; count += num; @@ -342,14 +336,14 @@ 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; 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); /* wait for quit single globally, or for worker zero, wait * for zero_quit */ @@ -358,8 +352,7 @@ handle_work_for_shutdown_test(void *arg) count += num; 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); total += num; } worker_stats[id].handled_packets += num; @@ -373,14 +366,13 @@ 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) { worker_stats[id].handled_packets += num; 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); } returned = rte_distributor_return_pkt(d, id, buf, num); diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c index 12b3db33c..b720abe03 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