From patchwork Fri Jan 26 07:55:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomasz Duszynski X-Patchwork-Id: 34543 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 83A9F1B3C1; Fri, 26 Jan 2018 08:55:44 +0100 (CET) Received: from mail-lf0-f65.google.com (mail-lf0-f65.google.com [209.85.215.65]) by dpdk.org (Postfix) with ESMTP id 178301B388 for ; Fri, 26 Jan 2018 08:55:42 +0100 (CET) Received: by mail-lf0-f65.google.com with SMTP id f136so13054549lff.8 for ; Thu, 25 Jan 2018 23:55:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=2NNzg8P5YAMeYpAu/Yq1cEYvTtOI1bYA0ANdUGq3RAo=; b=IV6T1iboKUXGrn/NOBvNMhnxyPMcLMQZhhtZ4Gcz7UZOF8UTzGWKbJ+cMVyh3AjS7X Qn0AJBBJX+jk21gwHA46RvaJfIcNFTLk1XHCbQgrHGuRkhIN3/gnTQkmDtYuDS4wrWvB 18nwwKCHTV2Lk9lp0XCM7cIaHQ9ItJTmU3N3aF3XyTd0pLicsRe1qVZqgG+SH8XH3RkY SaXbNH+ecCf8M6SlZpb16/Unwhx/Ru/eQp+3bz4WD0Md28AMpPrFEjYFH1AP+w6TmGVe os67OJ+xHvWL90030K5UK6/UknhnqIQFBrZKUpdR0l38Fsrc2NnSQHqLLFmohsOStSca 0/2Q== 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; bh=2NNzg8P5YAMeYpAu/Yq1cEYvTtOI1bYA0ANdUGq3RAo=; b=pQOTVu3kGII93u8d6++W4Aw8Btm753Y+YUvUUpsjcINM6xTnNISK9mr3slkCEPJW5l vAfMRoT1Ut73VSwf+lU7ck0SpUfAWM68tAak7HrJqLaSISFTJYKovvN7KQh1QCb6RQWx nMiw7Yy5A2o0SEpRcyn10fGzDd4m18ZNaCMz0niPAkXVIYLNv7YfUMTZeoqGWBGkQNMZ QEw3tlgXLLg+2McCwX4y3B/hhgxxZkBJCERwTfOfwXNKhclNkcSgjH513OX1yicmHB1Q e1rymEnKWivq7U8AlzyCVEuW/cHw8Qb0Bny7//Hy3KsGol+ax9WS2WDH6qPqGF/0DlIM Jr5g== X-Gm-Message-State: AKwxyteLl6FfXxmzPhX1wH01FOPpRz0Y6NRwhJeuXTIzGYHxN7lGAAGh +M9Dpbf0HxkoR1OD09yWrmOoxGzBPmc= X-Google-Smtp-Source: AH8x226DX2SM2+t6OBUzPhBj7nk7T/nwkfqeHJJ/VrK1A6HZd5CDia3Nb8KfIbSfFo8GE6YThn2Wew== X-Received: by 10.46.5.15 with SMTP id 15mr7464603ljf.98.1516953342326; Thu, 25 Jan 2018 23:55:42 -0800 (PST) Received: from sh.semihalf.local (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id d8sm815747lja.54.2018.01.25.23.55.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 25 Jan 2018 23:55:41 -0800 (PST) From: Tomasz Duszynski To: dev@dpdk.org Cc: mw@semihalf.com, dima@marvell.com, nsamsono@marvell.com, Jianbo.liu@linaro.org, stable@dpdk.org Date: Fri, 26 Jan 2018 08:55:22 +0100 Message-Id: <1516953322-26378-1-git-send-email-tdu@semihalf.com> X-Mailer: git-send-email 2.7.4 Subject: [dpdk-dev] [PATCH] net/mrvl: fix mbuf to bpool lookup X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Natalie Samsonov Since in DPDK 17.11 port type was changed from uint8_t to uint16_t the MBUF_INVALID_PORT value became 0xffff but in mrvl_tx_pkt_burst() when trying to lookup bpool using mbuf port, we check if the port is invalid according to value 0xff. This causes segmentation fault. Solution: since the valid port value cannot exceed RTE_MAX_ETHPORTS (size of bpool lookup table) any other values consider as invalid so the packet should be returned to DPDK pool. Fixes: afb4d0d0bf91 ("net/mrvl: add Rx/Tx support") Cc: stable@dpdk.org Signed-off-by: Natalie Samsonov --- drivers/net/mrvl/mrvl_ethdev.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/mrvl/mrvl_ethdev.c b/drivers/net/mrvl/mrvl_ethdev.c index 3b60f91..705c4bd 100644 --- a/drivers/net/mrvl/mrvl_ethdev.c +++ b/drivers/net/mrvl/mrvl_ethdev.c @@ -2096,8 +2096,9 @@ mrvl_tx_pkt_burst(void *txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) sq->ent[sq->head].buff.addr = rte_mbuf_data_iova_default(mbuf); sq->ent[sq->head].bpool = - (unlikely(mbuf->port == 0xff || mbuf->refcnt > 1)) ? - NULL : mrvl_port_to_bpool_lookup[mbuf->port]; + (unlikely(mbuf->port >= RTE_MAX_ETHPORTS || + mbuf->refcnt > 1)) ? NULL : + mrvl_port_to_bpool_lookup[mbuf->port]; sq->head = (sq->head + 1) & MRVL_PP2_TX_SHADOWQ_MASK; sq->size++; @@ -2430,6 +2431,7 @@ rte_pmd_mrvl_probe(struct rte_vdev_device *vdev) } memset(mrvl_port_bpool_size, 0, sizeof(mrvl_port_bpool_size)); + memset(mrvl_port_to_bpool_lookup, 0, sizeof(mrvl_port_to_bpool_lookup)); mrvl_lcore_first = RTE_MAX_LCORE; mrvl_lcore_last = 0;