From: Tyler Retzlaff <roretzla@linux.microsoft.com>
To: Sivaramakrishnan Venkat <venkatx.sivaramakrishnan@intel.com>
Cc: Igor Russkikh <irusskikh@marvell.com>,
Selwin Sebastian <selwin.sebastian@amd.com>,
Ajit Khaparde <ajit.khaparde@broadcom.com>,
Somnath Kotur <somnath.kotur@broadcom.com>,
Nithin Dabilpuram <ndabilpuram@marvell.com>,
Kiran Kumar K <kirankumark@marvell.com>,
Sunil Kumar Kori <skori@marvell.com>,
Satha Rao <skoteshwar@marvell.com>,
Yuying Zhang <yuying.zhang@intel.com>,
Beilei Xing <beilei.xing@intel.com>,
Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>,
Hemant Agrawal <hemant.agrawal@nxp.com>,
Sachin Saxena <sachin.saxena@nxp.com>,
Simei Su <simei.su@intel.com>, Wenjun Wu <wenjun1.wu@intel.com>,
Gagandeep Singh <g.singh@nxp.com>,
John Daley <johndale@cisco.com>,
Hyong Youb Kim <hyonkim@cisco.com>, Gaetan Rivet <grive@u256.net>,
Qi Zhang <qi.z.zhang@intel.com>,
Xiao Wang <xiao.w.wang@intel.com>, Jie Hai <haijie1@huawei.com>,
Yisen Zhuang <yisen.zhuang@huawei.com>,
Jingjing Wu <jingjing.wu@intel.com>,
Qiming Yang <qiming.yang@intel.com>,
Junfeng Guo <junfeng.guo@intel.com>,
Andrew Boyer <andrew.boyer@amd.com>,
Matan Azrad <matan@nvidia.com>,
Viacheslav Ovsiienko <viacheslavo@nvidia.com>,
Dariusz Sosnowski <dsosnowski@nvidia.com>,
Ori Kam <orika@nvidia.com>, Suanming Mou <suanmingm@nvidia.com>,
Long Li <longli@microsoft.com>,
Chaoyong He <chaoyong.he@corigine.com>,
Jiawen Wu <jiawenwu@trustnetic.com>,
Harman Kalra <hkalra@marvell.com>,
Devendra Singh Rawat <dsinghrawat@marvell.com>,
Alok Prasad <palok@marvell.com>,
Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,
Jerin Jacob <jerinj@marvell.com>,
Maciej Czekaj <mczekaj@marvell.com>,
Jian Wang <jianwang@trustnetic.com>,
Jochen Behrens <jbehrens@vmware.com>,
Thomas Monjalon <thomas@monjalon.net>,
Ferruh Yigit <ferruh.yigit@amd.com>,
dev@dpdk.org, ciara.power@intel.com, ferruh.yigit@intel.com,
stable@dpdk.org
Subject: Re: [PATCH v3] ethdev: fix getting supported ptypes list
Date: Thu, 21 Dec 2023 13:03:33 -0800 [thread overview]
Message-ID: <20231221210333.GA7666@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> (raw)
In-Reply-To: <20231221184001.928922-1-venkatx.sivaramakrishnan@intel.com>
On Thu, Dec 21, 2023 at 06:40:01PM +0000, Sivaramakrishnan Venkat wrote:
> Incorrect ptypes list causes buffer overflow for Address Sanitizer
> run.Previously, the last element in the ptypes lists to be
> "RTE_PTYPE_UNKNOWN" for rte_eth_dev_get_supported_ptypes(), but this was
> not clearly documented and many PMDs did not follow this implementation.
> Instead, the dev_supported_ptypes_get() function pointer now returns the
> number of elements to eliminate the need for "RTE_PTYPE_UNKNOWN"
> as the last item.
>
> Fixes: 4790935 ("ethdev: make device operations struct private")
> Cc: ferruh.yigit@intel.com
> CC: stable@dpdk.org
>
> --
> V3: Rework function pointer to return number of elements and remove
> the need for RTE_PTYPE_UNKNOWN in list
>
> Signed-off-by: Sivaramakrishnan Venkat <venkatx.sivaramakrishnan@intel.com>
> ---
> drivers/net/atlantic/atl_ethdev.c | 13 ++++++++-----
> drivers/net/axgbe/axgbe_ethdev.c | 13 ++++++++-----
> drivers/net/bnxt/bnxt_ethdev.c | 7 ++++---
> drivers/net/cnxk/cnxk_ethdev.h | 3 ++-
> drivers/net/cnxk/cnxk_lookup.c | 7 ++++---
> drivers/net/cpfl/cpfl_ethdev.c | 7 ++++---
> drivers/net/cxgbe/cxgbe_ethdev.c | 10 ++++++----
> drivers/net/cxgbe/cxgbe_pfvf.h | 3 ++-
> drivers/net/dpaa/dpaa_ethdev.c | 7 +++++--
> drivers/net/dpaa2/dpaa2_ethdev.c | 10 ++++++----
> drivers/net/e1000/igb_ethdev.c | 13 ++++++++-----
> drivers/net/enetc/enetc_ethdev.c | 7 ++++---
> drivers/net/enic/enic_ethdev.c | 17 ++++++++++-------
> drivers/net/failsafe/failsafe_ops.c | 5 +++--
> drivers/net/fm10k/fm10k_ethdev.c | 15 +++++++++------
> drivers/net/hns3/hns3_rxtx.c | 16 +++++++++-------
> drivers/net/hns3/hns3_rxtx.h | 3 ++-
> drivers/net/i40e/i40e_rxtx.c | 11 +++++++----
> drivers/net/i40e/i40e_rxtx.h | 3 ++-
> drivers/net/iavf/iavf_ethdev.c | 10 ++++++----
> drivers/net/ice/ice_dcf_ethdev.c | 7 ++++---
> drivers/net/ice/ice_rxtx.c | 23 ++++++++++++++---------
> drivers/net/ice/ice_rxtx.h | 3 ++-
> drivers/net/idpf/idpf_ethdev.c | 7 ++++---
> drivers/net/igc/igc_ethdev.c | 10 ++++++----
> drivers/net/ionic/ionic_rxtx.c | 7 ++++---
> drivers/net/ionic/ionic_rxtx.h | 3 ++-
> drivers/net/ixgbe/ixgbe_ethdev.c | 18 ++++++++++++------
> drivers/net/mlx4/mlx4.h | 3 ++-
> drivers/net/mlx4/mlx4_ethdev.c | 17 ++++++++++-------
> drivers/net/mlx5/mlx5.h | 3 ++-
> drivers/net/mlx5/mlx5_ethdev.c | 11 +++++++----
> drivers/net/netvsc/hn_var.h | 3 ++-
> drivers/net/netvsc/hn_vf.c | 5 +++--
> drivers/net/nfp/nfp_net_common.c | 12 +++++++++---
> drivers/net/nfp/nfp_net_common.h | 3 ++-
> drivers/net/ngbe/ngbe_ethdev.c | 9 ++++++---
> drivers/net/ngbe/ngbe_ethdev.h | 3 ++-
> drivers/net/ngbe/ngbe_ptypes.c | 3 ++-
> drivers/net/ngbe/ngbe_ptypes.h | 2 +-
> drivers/net/octeontx/octeontx_ethdev.c | 11 +++++++----
> drivers/net/pfe/pfe_ethdev.c | 8 ++++++--
> drivers/net/qede/qede_ethdev.c | 11 +++++++----
> drivers/net/sfc/sfc_dp_rx.h | 2 +-
> drivers/net/sfc/sfc_ef10.h | 3 ++-
> drivers/net/sfc/sfc_ef100_rx.c | 7 ++++---
> drivers/net/sfc/sfc_ef10_rx.c | 11 ++++++-----
> drivers/net/sfc/sfc_ethdev.c | 5 +++--
> drivers/net/sfc/sfc_rx.c | 7 ++++---
> drivers/net/tap/rte_eth_tap.c | 4 +++-
> drivers/net/thunderx/nicvf_ethdev.c | 4 +++-
> drivers/net/txgbe/txgbe_ethdev.c | 9 ++++++---
> drivers/net/txgbe/txgbe_ethdev.h | 3 ++-
> drivers/net/txgbe/txgbe_ptypes.c | 6 +++---
> drivers/net/txgbe/txgbe_ptypes.h | 2 +-
> drivers/net/vmxnet3/vmxnet3_ethdev.c | 14 +++++++++-----
> lib/ethdev/ethdev_driver.h | 3 ++-
> lib/ethdev/rte_ethdev.c | 10 ++++++----
> 58 files changed, 280 insertions(+), 172 deletions(-)
>
> diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c
> index 3a028f4290..d0d9e121db 100644
> --- a/drivers/net/atlantic/atl_ethdev.c
> +++ b/drivers/net/atlantic/atl_ethdev.c
> @@ -43,7 +43,8 @@ static int atl_dev_stats_reset(struct rte_eth_dev *dev);
> static int atl_fw_version_get(struct rte_eth_dev *dev, char *fw_version,
> size_t fw_size);
>
> -static const uint32_t *atl_dev_supported_ptypes_get(struct rte_eth_dev *dev);
> +static const uint32_t *atl_dev_supported_ptypes_get(struct rte_eth_dev *dev,
> + uint32_t *no_of_elements);
based on the code that follows no_of_elements should probably be type
size_t * because the resulting type of the expression using RTE_DIM.
clearly it will never overflow uint32_t i suppose you could explicitly
cast to make it clear the potential truncation is on purpose.
>
> static int atl_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
>
> @@ -1132,7 +1133,8 @@ atl_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
> }
>
> static const uint32_t *
> -atl_dev_supported_ptypes_get(struct rte_eth_dev *dev)
> +atl_dev_supported_ptypes_get(struct rte_eth_dev *dev,
> + uint32_t *no_of_elements)
> {
> static const uint32_t ptypes[] = {
> RTE_PTYPE_L2_ETHER,
> @@ -1143,12 +1145,13 @@ atl_dev_supported_ptypes_get(struct rte_eth_dev *dev)
> RTE_PTYPE_L4_TCP,
> RTE_PTYPE_L4_UDP,
> RTE_PTYPE_L4_SCTP,
> - RTE_PTYPE_L4_ICMP,
> - RTE_PTYPE_UNKNOWN
> + RTE_PTYPE_L4_ICMP
> };
>
> - if (dev->rx_pkt_burst == atl_recv_pkts)
> + if (dev->rx_pkt_burst == atl_recv_pkts) {
> + *no_of_elements = RTE_DIM(ptypes);
^^^^^^^^^^^^^^^ <-- is T = size_t
> return ptypes;
> + }
>
> return NULL;
> }
next prev parent reply other threads:[~2023-12-21 21:03 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-12 14:37 [PATCH v1] net/tap: fix buffer overflow for " Sivaramakrishnan Venkat
2023-12-12 15:23 ` Ferruh Yigit
2023-12-15 13:38 ` [PATCH v2] " Sivaramakrishnan Venkat
2023-12-15 13:52 ` Ferruh Yigit
2023-12-15 13:55 ` Sivaramakrishnan, VenkatX
2023-12-15 17:21 ` Ferruh Yigit
2023-12-21 18:40 ` [PATCH v3] ethdev: fix getting supported " Sivaramakrishnan Venkat
2023-12-21 21:03 ` Tyler Retzlaff [this message]
2023-12-22 8:21 ` David Marchand
2024-01-04 17:51 ` [dpdk-dev v4 2/2] net/tap: fix buffer overflow for " Sivaramakrishnan Venkat
2024-01-04 17:51 ` [dpdk-dev v4 1/2] net/tap: fix buffer overflow for ptypes list through updation of last element Sivaramakrishnan Venkat
2024-01-11 15:11 ` Ferruh Yigit
2024-01-04 17:51 ` [dpdk-dev v4 2/2] net/tap: fix buffer overflow for ptypes list through driver API update Sivaramakrishnan Venkat
2024-01-11 15:12 ` Ferruh Yigit
2024-01-11 16:29 ` Andrew Rybchenko
2024-01-18 12:07 ` [PATCH v5 1/2] drivers/net: fix buffer overflow for ptypes list Sivaramakrishnan Venkat
2024-01-18 12:07 ` [PATCH v5 2/2] drivers/net: return number of types in get supported types Sivaramakrishnan Venkat
2024-01-19 14:51 ` Ferruh Yigit
2024-01-23 12:07 ` Power, Ciara
2024-01-23 14:59 ` Ferruh Yigit
2024-01-23 15:12 ` Ferruh Yigit
2024-01-23 15:37 ` Power, Ciara
2024-01-19 14:58 ` [PATCH v5 1/2] drivers/net: fix buffer overflow for ptypes list Ferruh Yigit
2024-01-19 17:10 ` Power, Ciara
2024-01-22 9:42 ` Ferruh Yigit
2024-01-22 9:46 ` Power, Ciara
2024-01-22 10:03 ` Ferruh Yigit
2024-01-25 16:07 ` [PATCH v6 " Sivaramakrishnan Venkat
2024-01-25 16:07 ` [PATCH v6 2/2] drivers/net: return number of types in get supported types Sivaramakrishnan Venkat
2024-01-31 3:22 ` Ferruh Yigit
2024-02-01 15:43 ` [PATCH v7 1/2] drivers/net: fix buffer overflow for ptypes list Sivaramakrishnan Venkat
2024-02-01 15:50 ` Sivaramakrishnan Venkat
2024-02-01 15:50 ` [PATCH v7 2/2] drivers/net: return number of types in get supported types Sivaramakrishnan Venkat
2024-02-01 23:02 ` Ferruh Yigit
2024-02-01 22:58 ` [PATCH v7 1/2] drivers/net: fix buffer overflow for ptypes list Ferruh Yigit
2024-02-01 23:29 ` Ferruh Yigit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231221210333.GA7666@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net \
--to=roretzla@linux.microsoft.com \
--cc=ajit.khaparde@broadcom.com \
--cc=andrew.boyer@amd.com \
--cc=andrew.rybchenko@oktetlabs.ru \
--cc=beilei.xing@intel.com \
--cc=chaoyong.he@corigine.com \
--cc=ciara.power@intel.com \
--cc=dev@dpdk.org \
--cc=dsinghrawat@marvell.com \
--cc=dsosnowski@nvidia.com \
--cc=ferruh.yigit@amd.com \
--cc=ferruh.yigit@intel.com \
--cc=g.singh@nxp.com \
--cc=grive@u256.net \
--cc=haijie1@huawei.com \
--cc=hemant.agrawal@nxp.com \
--cc=hkalra@marvell.com \
--cc=hyonkim@cisco.com \
--cc=irusskikh@marvell.com \
--cc=jbehrens@vmware.com \
--cc=jerinj@marvell.com \
--cc=jianwang@trustnetic.com \
--cc=jiawenwu@trustnetic.com \
--cc=jingjing.wu@intel.com \
--cc=johndale@cisco.com \
--cc=junfeng.guo@intel.com \
--cc=kirankumark@marvell.com \
--cc=longli@microsoft.com \
--cc=matan@nvidia.com \
--cc=mczekaj@marvell.com \
--cc=ndabilpuram@marvell.com \
--cc=orika@nvidia.com \
--cc=palok@marvell.com \
--cc=qi.z.zhang@intel.com \
--cc=qiming.yang@intel.com \
--cc=rahul.lakkireddy@chelsio.com \
--cc=sachin.saxena@nxp.com \
--cc=selwin.sebastian@amd.com \
--cc=simei.su@intel.com \
--cc=skori@marvell.com \
--cc=skoteshwar@marvell.com \
--cc=somnath.kotur@broadcom.com \
--cc=stable@dpdk.org \
--cc=suanmingm@nvidia.com \
--cc=thomas@monjalon.net \
--cc=venkatx.sivaramakrishnan@intel.com \
--cc=viacheslavo@nvidia.com \
--cc=wenjun1.wu@intel.com \
--cc=xiao.w.wang@intel.com \
--cc=yisen.zhuang@huawei.com \
--cc=yuying.zhang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).