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 34882A04B1 for ; Sat, 10 Oct 2020 18:05:49 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 625D21D904; Sat, 10 Oct 2020 18:05:42 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 7EF591D91A for ; Sat, 10 Oct 2020 18:05:41 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20201010160530euoutp02e359939ec402000fac73562493de051d~8rSJRig-D2850728507euoutp02Z for ; Sat, 10 Oct 2020 16:05:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20201010160530euoutp02e359939ec402000fac73562493de051d~8rSJRig-D2850728507euoutp02Z DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1602345930; bh=NXpLZiftAddfs3hsi2CLAhUURHCIw4Q+iTczB/vGCL0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=R3E0yUFNBGlCCPv2WWPtptbhy+Hr1Fv2Xk9NbgjiR7ozw6bhI+yr/bhFNu64w+CGv LNdnTyMSqUk60pOdK2vXbHTYT5gns5Nilx5aJ3ImqCnY1leH9+kKnwFkZ6ji2B3/FC ZoKxiOFyp/JsT1HSI5azSJGpYVDibtw7Uzrexi2o= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20201010160524eucas1p11de25cb48960dda28ee84cb1e9242808~8rSDqiPtv2437224372eucas1p1r; Sat, 10 Oct 2020 16:05:24 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id 76.58.05997.4CBD18F5; Sat, 10 Oct 2020 17:05:24 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20201010160523eucas1p19287c5bf3b7e2818c730ae23f514853f~8rSCjaH3v2245522455eucas1p1w; Sat, 10 Oct 2020 16:05:23 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20201010160523eusmtrp1c6326f9577c4fff3e03567fd2c37afff~8rSCi57lf2920229202eusmtrp1s; Sat, 10 Oct 2020 16:05:23 +0000 (GMT) X-AuditID: cbfec7f4-677ff7000000176d-65-5f81dbc44b8c Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 79.A6.06017.2CBD18F5; Sat, 10 Oct 2020 17:05:23 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20201010160518eusmtip12c2d05d73653f15cd55f216ce91c597e~8rR95mBMz2442224422eusmtip1x; Sat, 10 Oct 2020 16:05:18 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Sat, 10 Oct 2020 18:04:54 +0200 Message-Id: <20201010160508.19709-4-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201010160508.19709-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrMIsWRmVeSWpSXmKPExsWy7djPc7pHbjfGG1y/w2dxY5W9Rd+kj0wW 7z5tZ7J41rOO0eJfxx92B1aPXwuWsnos3vOSyePguz1MAcxRXDYpqTmZZalF+nYJXBk71gYX PFCp+PRhIWMD4znZLkZODgkBE4nJDxezg9hCAisYJRasUOli5AKyvzBKfGjdxwKR+Mwo8WQF D0zDnn+rGSGKljNKzHh+iAXC+cQo8bZtLRtIFZuArcSRmV9ZQWwRgTCJ5ua9QEUcHMwCzhJP voKVCAt4SBxtvswEYrMIqEpc7fjLCFLCK+AqcfuwJMQueYnVGw4wg9icAm4SZ7sOsoGskhC4 zCYxfRrEcRICLhJz1vexQtjCEq+Ob2GHsGUkTk/uYYFo2MYocfX3T0YIZz+jxPXeFVBV1hKH //1mgzhOU2L9Ln2IsKPEibvzwQ6SEOCTuPFWECTMDGRO2jadGSLMK9HRJgRRrSfxtGcqI8za P2ufQJ3mITHx2mZo4F5llFj613wCo/wshF0LGBlXMYqnlhbnpqcWG+WllusVJ+YWl+al6yXn 525iBEb96X/Hv+xg3PUn6RCjAAejEg+vxKnGeCHWxLLiytxDjBIczEoivE5nT8cJ8aYkVlal FuXHF5XmpBYfYpTmYFES5zVe9DJWSCA9sSQ1OzW1ILUIJsvEwSnVwCgffsX8/nbFBauk7yTn ta2ULKjb+6hu89Jn/3+v8vsjGiTiMGHiwqVxAuUTBX/JrQ8wdy9aIPC1QveyyeuK44enflfh vNz/sihDafvzma4tueePJOetW+fys+/A/u8n14g8148vjpj36r4GL2N+6c0Jnx5s/nSlMDFo 4h+VON09r2+535eYV3JdiaU4I9FQi7moOBEAprRoIfYCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrKLMWRmVeSWpSXmKPExsVy+t/xu7qHbzfGG0xwt7ixyt6ib9JHJot3 n7YzWTzrWcdo8a/jD7sDq8evBUtZPRbvecnkcfDdHqYA5ig9m6L80pJUhYz84hJbpWhDCyM9 Q0sLPSMTSz1DY/NYKyNTJX07m5TUnMyy1CJ9uwS9jB1rgwseqFR8+rCQsYHxnGwXIyeHhICJ xJ5/qxm7GLk4hASWMkqcPHSYtYuRAyghI/HhkgBEjbDEn2tdbBA1Hxgl/p78zQ6SYBOwlTgy 8ytYvYhAmMSJlf4gYWYBd4kti6cyg9jCAh4SR5svM4HYLAKqElc7/jKClPMKuErcPiwJMV5e YvWGA2DlnAJuEme7DkKtamSUOHH7JtsERr4FjAyrGEVSS4tz03OLjfSKE3OLS/PS9ZLzczcx AoNw27GfW3Ywdr0LPsQowMGoxMMrcaoxXog1say4MvcQowQHs5IIr9PZ03FCvCmJlVWpRfnx RaU5qcWHGE2BjprILCWanA+MkLySeENTQ3MLS0NzY3NjMwslcd4OgYMxQgLpiSWp2ampBalF MH1MHJxSDYwtRkqq23xnbpVkdPjz+oM/h+6/X6IfpzCFJZ0PqtI4eudGdzUbx55JE9NOce+7 pJn2est7FWb+VxInQ/yLIs/9y/2mWPab6+WvlDUzIv91ljC2Sa7nO3LvmvSK+Y+WvTtaPfFN 1bxOL9mGigLLI3ncilV+u8JXy7z9Ylv1rNMpYtszVp2/1h+UWIozEg21mIuKEwFdZJmQWAIA AA== X-CMS-MailID: 20201010160523eucas1p19287c5bf3b7e2818c730ae23f514853f X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20201010160523eucas1p19287c5bf3b7e2818c730ae23f514853f X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20201010160523eucas1p19287c5bf3b7e2818c730ae23f514853f References: <20201009220202.20834-1-l.wojciechow@partner.samsung.com> <20201010160508.19709-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-stable] [PATCH v7 03/16] 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 Acked-by: David Hunt --- 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