patches for DPDK stable branches
 help / color / Atom feed
From: "Zhang, Qi Z" <qi.z.zhang@intel.com>
To: "Yigit, Ferruh" <ferruh.yigit@intel.com>,
	"Wu, Jingjing" <jingjing.wu@intel.com>,
	"Xing, Beilei" <beilei.xing@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
	"Yigit, Ferruh" <ferruh.yigit@intel.com>,
	"stable@dpdk.org" <stable@dpdk.org>
Subject: Re: [dpdk-stable] [dpdk-dev] [PATCH] net/iavf: fix uninitialized variable
Date: Tue, 30 Jun 2020 14:33:02 +0000
Message-ID: <039ED4275CED7440929022BC67E7061154849317@SHSMSX103.ccr.corp.intel.com> (raw)
In-Reply-To: <20200623134532.1271737-1-ferruh.yigit@intel.com>



> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Ferruh Yigit
> Sent: Tuesday, June 23, 2020 9:46 PM
> To: Wu, Jingjing <jingjing.wu@intel.com>; Xing, Beilei <beilei.xing@intel.com>
> Cc: dev@dpdk.org; Yigit, Ferruh <ferruh.yigit@intel.com>; stable@dpdk.org
> Subject: [dpdk-dev] [PATCH] net/iavf: fix uninitialized variable
> 
> This is observed with experimental gcc 11, although the older gcc versions
> don't complain about it, issue seems a valid one.
> gcc version 11.0.0 20200621 (experimental) (GCC)
> 
> Build error
> .../drivers/net/iavf/iavf_ethdev.c: In function ‘iavf_dev_link_update’:
> .../drivers/net/iavf/iavf_ethdev.c:641:6:
>     error: ‘new_link’ is used uninitialized [-Werror=uninitialized]
>   641 |  if (rte_atomic64_cmpset((uint64_t *)&dev->data->dev_link,
>       |
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   642 |     *(uint64_t *)&dev->data->dev_link,
>       |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>   643 |     *(uint64_t *)&new_link) == 0)
>       |     ~~~~~~~~~~~~~~~~~~~~~~~
> .../drivers/net/iavf/iavf_ethdev.c:596:22:
>     note: ‘new_link’ declared here
>   596 |  struct rte_eth_link new_link;
>       |                      ^~~~~~~~
> cc1: all warnings being treated as error
> 
> All fields of the 'new_link' struct is already set in function, so the
> 'uninitialized' warning is hard to get. This is because the combination of
> aligning and bitfield usage of the struct
> 
> The definition of the struct is:
> struct rte_eth_link {
>         uint32_t link_speed;        /**< ETH_SPEED_NUM_ */
>         uint16_t link_duplex  : 1;  /**< ETH_LINK_[HALF/FULL]_DUPLEX
> */
>         uint16_t link_autoneg : 1;  /**< ETH_LINK_[AUTONEG/FIXED] */
>         uint16_t link_status  : 1;  /**< ETH_LINK_[DOWN/UP] */
> } __rte_aligned(8);      /**< aligned for atomic64 read/write */
> 
> Overall the size of the 'struct rte_eth_link' is 64 bits, but function only sets
> the 35 bits of it, because only 3 bits of 16 bits variable are used.
> When the struct cast to 'uint64_t' because of the 'rte_atomic64_cmpset'
> the upper 29 bits are used without initialization.
> 
> To fix the uninitialized usage, memset the variable 'new_link' before using it.
> 
> Cc: stable@dpdk.org
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>

Acked-by: Qi Zhang <qi.z.zhang@intel.com>

Applied to dpdk-next-net-intel with below fix line be added
Fixes: 48de41ca11f0 ("net/avf: enable link status update")

Thanks
Qi


      reply index

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-23 13:45 [dpdk-stable] " Ferruh Yigit
2020-06-30 14:33 ` Zhang, Qi Z [this message]

Reply instructions:

You may reply publically 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=039ED4275CED7440929022BC67E7061154849317@SHSMSX103.ccr.corp.intel.com \
    --to=qi.z.zhang@intel.com \
    --cc=beilei.xing@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=jingjing.wu@intel.com \
    --cc=stable@dpdk.org \
    /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

patches for DPDK stable branches

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ http://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/ public-inbox