From: Ferruh Yigit <ferruh.yigit@intel.com>
To: "Wang, Haiyue" <haiyue.wang@intel.com>,
"Yang, Qiming" <qiming.yang@intel.com>,
"Zhang, Qi Z" <qi.z.zhang@intel.com>,
"Stillwell Jr, Paul M" <paul.m.stillwell.jr@intel.com>,
"Lu, Wenzhuo" <wenzhuo.lu@intel.com>,
"Rong, Leyi" <leyi.rong@intel.com>,
"Shukla, Shivanshu" <shivanshu.shukla@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
"stable@dpdk.org" <stable@dpdk.org>,
Kevin Traynor <ktraynor@redhat.com>,
Ajit Khaparde <ajit.khaparde@broadcom.com>
Subject: Re: [dpdk-dev] [PATCH 3/4] net/ice/base: fix build with gcc11
Date: Mon, 10 May 2021 18:28:05 +0100 [thread overview]
Message-ID: <d8638559-b3cb-9011-86a2-39dec3e32843@intel.com> (raw)
In-Reply-To: <BN8PR11MB379512F5C3BEEBB5D2C88287F7549@BN8PR11MB3795.namprd11.prod.outlook.com>
On 5/10/2021 6:04 PM, Wang, Haiyue wrote:
>> -----Original Message-----
>> From: dev <dev-bounces@dpdk.org> On Behalf Of Ferruh Yigit
>> Sent: Monday, May 10, 2021 23:03
>> To: Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>; Stillwell Jr, Paul M
>> <paul.m.stillwell.jr@intel.com>; Lu, Wenzhuo <wenzhuo.lu@intel.com>; Rong, Leyi <leyi.rong@intel.com>;
>> Shukla, Shivanshu <shivanshu.shukla@intel.com>
>> Cc: Yigit, Ferruh <ferruh.yigit@intel.com>; dev@dpdk.org; stable@dpdk.org; Kevin Traynor
>> <ktraynor@redhat.com>; Ajit Khaparde <ajit.khaparde@broadcom.com>
>> Subject: [dpdk-dev] [PATCH 3/4] net/ice/base: fix build with gcc11
>>
>> Reproduced with '--buildtype=debugoptimized' config,
>> compiler version: gcc (GCC) 12.0.0 20210509 (experimental)
>>
>> There are multiple build errors, like:
>> ../drivers/net/ice/base/ice_switch.c: In function ‘ice_add_marker_act’:
>> ../drivers/net/ice/base/ice_switch.c:3727:15:
>> warning: array subscript ‘struct ice_aqc_sw_rules_elem[0]’
>> is partly outside array bounds of ‘unsigned char[52]’
>> [-Warray-bounds]
>> 3727 | lg_act->type = CPU_TO_LE16(ICE_AQC_SW_RULES_T_LG_ACT);
>> | ^~
>> In file included from ../drivers/net/ice/base/ice_type.h:52,
>> from ../drivers/net/ice/base/ice_common.h:8,
>> from ../drivers/net/ice/base/ice_switch.h:8,
>> from ../drivers/net/ice/base/ice_switch.c:5:
>> ../drivers/net/ice/base/ice_osdep.h:209:29:
>> note: referencing an object of size 52 allocated by ‘rte_zmalloc’
>> 209 | #define ice_malloc(h, s) rte_zmalloc(NULL, s, 0)
>> | ^~~~~~~~~~~~~~~~~~~~~~~
>> ../drivers/net/ice/base/ice_switch.c:3720:50:
>> note: in expansion of macro ‘ice_malloc’
>> lg_act = (struct ice_aqc_sw_rules_elem *)ice_malloc(hw, rules_size);
>>
>> These errors are mainly because allocated memory is cast to
>> "struct ice_aqc_sw_rules_elem *" but allocated size is less than the size
>> of "struct ice_aqc_sw_rules_elem".
>>
>> "struct ice_aqc_sw_rules_elem" has multiple other structs has unions,
>> based on which one is used allocated memory being less than the size of
>> "struct ice_aqc_sw_rules_elem" is logically correct but compiler is
>> complaining about it.
>>
>> As a solution making sure allocated memory size is at least size of
>> "struct ice_aqc_sw_rules_elem".
>> The function to use the struct is 'ice_aq_sw_rules()', and it already has
>> parameter for size of the rule, allocating more than needed shouldn't
>> cause any problem.
>>
>> Fixes: c7dd15931183 ("net/ice/base: add virtual switch code")
>> Fixes: 02acdce2f553 ("net/ice/base: add MAC filter with marker and counter")
>> Fixes: f89aa3affa9e ("net/ice/base: support removing advanced rule")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
>> ---
>> Cc: paul.m.stillwell.jr@intel.com
>> Cc: qi.z.zhang@intel.com
>> Cc: leyi.rong@intel.com
>> Cc: Kevin Traynor <ktraynor@redhat.com>
>> Cc: Ajit Khaparde <ajit.khaparde@broadcom.com>
>> ---
>> drivers/net/ice/base/ice_switch.c | 30 +++++++++++++++++++++++-------
>> 1 file changed, 23 insertions(+), 7 deletions(-)
>
> GCC bug ?
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98266
>
> Bug 98266 - [11 Regression] bogus array subscript is partly outside array bounds on virtual inheritance
>
I am not sure if this is a gcc defect.
Here there is a memory allocated and assigned to "struct ice_aqc_sw_rules_elem
*", but allocated memory size is less than the struct size. As far as I
understand this is the reason of compiler warning.
For this case it may not be problem logically since both who allocates memory
and who uses the memory follows a contract, but there is a mismatch between
pointer type and object. If some other function wants to access all fields of
the struct, it will be out of bound access.
next prev parent reply other threads:[~2021-05-10 17:28 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-10 15:03 [dpdk-dev] [PATCH 1/4] net/bnx2x: " Ferruh Yigit
2021-05-10 15:03 ` [dpdk-dev] [PATCH 2/4] " Ferruh Yigit
2021-05-10 15:03 ` [dpdk-dev] [PATCH 3/4] net/ice/base: " Ferruh Yigit
2021-05-10 17:04 ` Wang, Haiyue
2021-05-10 17:13 ` Wang, Haiyue
2021-05-10 17:31 ` Ferruh Yigit
2021-05-10 17:55 ` Stillwell Jr, Paul M
2021-05-10 17:28 ` Ferruh Yigit [this message]
2021-05-11 1:59 ` Wang, Haiyue
2021-05-11 9:33 ` Ferruh Yigit
2021-05-11 9:08 ` Kevin Traynor
2021-05-10 15:03 ` [dpdk-dev] [PATCH 4/4] net/tap: " Ferruh Yigit
2021-05-11 12:28 ` Kevin Traynor
2021-05-11 11:44 ` [dpdk-dev] [PATCH v2 1/4] net/bnx2x: " Ferruh Yigit
2021-05-11 11:44 ` [dpdk-dev] [PATCH v2 2/4] " Ferruh Yigit
2021-05-11 12:27 ` Kevin Traynor
2021-05-11 11:44 ` [dpdk-dev] [PATCH v2 3/4] net/ice/base: " Ferruh Yigit
2021-05-11 11:44 ` [dpdk-dev] [PATCH v2 4/4] net/tap: " Ferruh Yigit
2021-05-11 12:26 ` [dpdk-dev] [PATCH v2 1/4] net/bnx2x: " Kevin Traynor
2021-05-11 13:14 ` [dpdk-dev] [PATCH v3 " Ferruh Yigit
2021-05-11 13:14 ` [dpdk-dev] [PATCH v3 2/4] " Ferruh Yigit
2021-05-11 13:14 ` [dpdk-dev] [PATCH v3 3/4] net/ice/base: " Ferruh Yigit
2021-05-12 7:43 ` [dpdk-dev] [dpdk-stable] " Wang, Haiyue
2021-05-11 13:14 ` [dpdk-dev] [PATCH v3 4/4] net/tap: " Ferruh Yigit
2021-05-12 13:04 ` [dpdk-dev] [PATCH v3 1/4] net/bnx2x: " 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=d8638559-b3cb-9011-86a2-39dec3e32843@intel.com \
--to=ferruh.yigit@intel.com \
--cc=ajit.khaparde@broadcom.com \
--cc=dev@dpdk.org \
--cc=haiyue.wang@intel.com \
--cc=ktraynor@redhat.com \
--cc=leyi.rong@intel.com \
--cc=paul.m.stillwell.jr@intel.com \
--cc=qi.z.zhang@intel.com \
--cc=qiming.yang@intel.com \
--cc=shivanshu.shukla@intel.com \
--cc=stable@dpdk.org \
--cc=wenzhuo.lu@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).