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 BB29BA04BC for ; Sat, 10 Oct 2020 00:03:19 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8C7A41D656; Sat, 10 Oct 2020 00:03:04 +0200 (CEST) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id F1F601D5C8 for ; Sat, 10 Oct 2020 00:02:58 +0200 (CEST) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20201009220243euoutp021a6bfe0d09047cb2e56d5450ded623ac~8cgwDwPlo1685816858euoutp02p for ; Fri, 9 Oct 2020 22:02:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20201009220243euoutp021a6bfe0d09047cb2e56d5450ded623ac~8cgwDwPlo1685816858euoutp02p DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1602280963; bh=NXpLZiftAddfs3hsi2CLAhUURHCIw4Q+iTczB/vGCL0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=H0JeceaDul9bmLBRiRL9MOdoyGezwculX6WJTjSfHAv0f6eObZ+PCcDRElG35VmU3 njxQR/fgwYFj9ASPFsTGMCBJnvPt1ila1Ipr7rsdEYqcKbIrJRD5YPpmledsLcDYod HswxfM9KgyvlnNI8z6ZP51jrLZQrA76TgfwTikyQ= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20201009220233eucas1p117e7f4720be8459df0c9733ed1500e40~8cgmvnf7C1723217232eucas1p1W; Fri, 9 Oct 2020 22:02:33 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id DD.E2.06318.9FDD08F5; Fri, 9 Oct 2020 23:02:33 +0100 (BST) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20201009220232eucas1p201d3b81574b7ec42ff3fb18f4bbfcbea~8cglozoTP1921319213eucas1p2S; Fri, 9 Oct 2020 22:02:32 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20201009220232eusmtrp2a7c04bf24cf2c11da0b7d36feb141452~8cgloKEQq1642116421eusmtrp2Z; Fri, 9 Oct 2020 22:02:32 +0000 (GMT) X-AuditID: cbfec7f5-371ff700000018ae-98-5f80ddf937dd Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id D2.E2.06314.8FDD08F5; Fri, 9 Oct 2020 23:02:32 +0100 (BST) Received: from Padamandas.fritz.box (unknown [106.210.88.70]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20201009220231eusmtip1a3b4500e6408000efd622e71583ddac0~8cgk2bDSs1334813348eusmtip1s; Fri, 9 Oct 2020 22:02:31 +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 00:01:50 +0200 Message-Id: <20201009220202.20834-4-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201009220202.20834-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrCIsWRmVeSWpSXmKPExsWy7djP87o/7zbEG5xcJmhxY5W9Rd+kj0wW 7z5tZ7J41rOO0eJfxx92B1aPXwuWsnos3vOSyePguz1MAcxRXDYpqTmZZalF+nYJXBk71gYX PFCp+PRhIWMD4znZLkZODgkBE4kLW06yg9hCAisYJY6fye1i5AKyvzBKzL54jhHC+cwosWJn J0sXIwdYx4LFiRDx5YwSO/5fZoJwPjFKNN5rYgUZxSZgK3Fk5lcwW0QgTKK5eS9YM7OAs8ST r2wgYWEBD4mOy5+YQcIsAqoS9xeJgIR5BVwlHtz4wgRxnLzE6g0HmEFsTgE3idZdy1hAVkkI XGaTOP15KhtEkYvEzdWT2CFsYYlXx7dA2TIS/3fOZ4Jo2MYocfX3T0YIZz+jxPXeFVBV1hKH //1mgzhOU2L9Ln2IsKPEuX332CEe5pO48VYQJMwMZE7aNp0ZIswr0dEmBFGtJ/G0ZyojzNo/ a5+wQNgeEpO+LWeHBM9VRon9zRNYJjDKz0JYtoCRcRWjeGppcW56arFxXmq5XnFibnFpXrpe cn7uJkZg3J/+d/zrDsZ9f5IOMQpwMCrx8DYkN8QLsSaWFVfmHmKU4GBWEuF1Ons6Tog3JbGy KrUoP76oNCe1+BCjNAeLkjiv8aKXsUIC6YklqdmpqQWpRTBZJg5OqQbGrMonWTvWST9hYbx7 3iBn7s+LSl2H+M0Fc4r2ztrvJMwc8vHjrE3nPptkPv3j+2rirwkX9/DNe2d7quFDg2X0Y73v qqxNd/ZcmZ9TL7xOc91HvS/dKafUbr7rC3jiZ257gvuRjc2ceWtFDyz8uvjPlYZjWiuL56hd fTrj5b5QrmXhJYUXdu39/liJpTgj0VCLuag4EQCLC1HD9wIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrKLMWRmVeSWpSXmKPExsVy+t/xu7o/7jbEGyw8zGJxY5W9Rd+kj0wW 7z5tZ7J41rOO0eJfxx92B1aPXwuWsnos3vOSyePguz1MAcxRejZF+aUlqQoZ+cUltkrRhhZG eoaWFnpGJpZ6hsbmsVZGpkr6djYpqTmZZalF+nYJehk71gYXPFCp+PRhIWMD4znZLkYODgkB E4kFixO7GLk4hASWMkpMv/2SBSIuI/HhkkAXIyeQKSzx51oXG0TNB0aJj81T2UASbAK2Ekdm fmUFqRcRCJM4sdIfJMws4C6xZfFUZhBbWMBDouPyJ2aQEhYBVYn7i0RAwrwCrhIPbnxhghgv L7F6wwGwck4BN4nWXctYIFY1MkpsOfCSeQIj3wJGhlWMIqmlxbnpucWGesWJucWleel6yfm5 mxiBQbjt2M/NOxgvbQw+xCjAwajEw6uR2BAvxJpYVlyZe4hRgoNZSYTX6ezpOCHelMTKqtSi /Pii0pzU4kOMpkBHTWSWEk3OB0ZIXkm8oamhuYWlobmxubGZhZI4b4fAwRghgfTEktTs1NSC 1CKYPiYOTqkGRpENysGWMiJ3zHf3iE5Nfb9MiM/mTHeUzsSPa66se/20q+TEcX6zFx3+lwO3 fFvO4tBmzfY5uuE0t9fNtXP6nwYtmcgk8mJWfufvCrH7sz2/uF/hla/rqo9+XW397OpXx+AM m/gLNj15F5XmuC0VZTlTffZV9QpDQzb37/cazz3KVq42vu7TpMRSnJFoqMVcVJwIAFGOgiBY AgAA X-CMS-MailID: 20201009220232eucas1p201d3b81574b7ec42ff3fb18f4bbfcbea X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20201009220232eucas1p201d3b81574b7ec42ff3fb18f4bbfcbea X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20201009220232eucas1p201d3b81574b7ec42ff3fb18f4bbfcbea References: <20201008052323.11547-1-l.wojciechow@partner.samsung.com> <20201009220202.20834-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-stable] [PATCH v6 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 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