From: Jakub Kicinski <kuba@kernel.org>
To: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
Cc: davem@davemloft.net, netdev@vger.kernel.org, edumazet@google.com,
pabeni@redhat.com, michael.chan@broadcom.com
Subject: Re: [PATCH net-next 1/2] eth: bnxt: fix one of the W=1 warnings about fortified memcpy()
Date: Thu, 3 Aug 2023 07:21:23 -0700 [thread overview]
Message-ID: <20230803072123.1fbd56db@kernel.org> (raw)
In-Reply-To: <58c12dc4-87e2-5c91-5744-27777acfa631@embeddedor.com>
On Thu, 3 Aug 2023 07:08:13 -0600 Gustavo A. R. Silva wrote:
> In function 'fortify_memcpy_chk',
> inlined from 'bnxt_hwrm_queue_cos2bw_qcfg' at drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c:165:3:
> include/linux/fortify-string.h:592:25: warning: call to '__read_overflow2_field' declared with attribute warning: detected read beyond size of field (2nd
> parameter); maybe use struct_group()? [-Wattribute-warning]
> 592 | __read_overflow2_field(q_size_field, size);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Here is a potential fix for that:
>
> diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c
> index 31f85f3e2364..e2390d73b3f0 100644
> --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c
> +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c
> @@ -144,7 +144,7 @@ static int bnxt_hwrm_queue_cos2bw_qcfg(struct bnxt *bp, struct ieee_ets *ets)
> struct hwrm_queue_cos2bw_qcfg_output *resp;
> struct hwrm_queue_cos2bw_qcfg_input *req;
> struct bnxt_cos2bw_cfg cos2bw;
> - void *data;
> + struct bnxt_cos2bw_cfg *data;
> int rc, i;
>
> rc = hwrm_req_init(bp, req, HWRM_QUEUE_COS2BW_QCFG);
> @@ -158,11 +158,11 @@ static int bnxt_hwrm_queue_cos2bw_qcfg(struct bnxt *bp, struct ieee_ets *ets)
> return rc;
> }
>
> - data = &resp->queue_id0 + offsetof(struct bnxt_cos2bw_cfg, queue_id);
> + data = (struct bnxt_cos2bw_cfg *)&resp->queue_id0;
> for (i = 0; i < bp->max_tc; i++, data += sizeof(cos2bw.cfg)) {
> int tc;
>
> - memcpy(&cos2bw.cfg, data, sizeof(cos2bw.cfg));
> + memcpy(&cos2bw.cfg, &data->cfg, sizeof(cos2bw.cfg));
> if (i == 0)
> cos2bw.queue_id = resp->queue_id0;
Neat trick, but seems like casting to the destination type should
really be the last resort. There's only a handful of members in this
struct, IMHO assigning member by member is cleaner.
But I'll defer to Michael.
next prev parent reply other threads:[~2023-08-03 14:21 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-27 19:07 [PATCH net-next 0/2] eth: bnxt: fix a couple of W=1 C=1 warnings Jakub Kicinski
2023-07-27 19:07 ` [PATCH net-next 1/2] eth: bnxt: fix one of the W=1 warnings about fortified memcpy() Jakub Kicinski
2023-08-03 13:08 ` Gustavo A. R. Silva
2023-08-03 14:21 ` Jakub Kicinski [this message]
2023-08-03 14:46 ` Michael Chan
2023-08-03 19:59 ` Gustavo A. R. Silva
2023-08-03 20:04 ` Michael Chan
2023-08-03 20:11 ` Gustavo A. R. Silva
2023-07-27 19:07 ` [PATCH net-next 2/2] eth: bnxt: fix warning for define in struct_group Jakub Kicinski
2023-07-27 20:28 ` [PATCH net-next 0/2] eth: bnxt: fix a couple of W=1 C=1 warnings Michael Chan
2023-07-28 21:00 ` patchwork-bot+netdevbpf
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=20230803072123.1fbd56db@kernel.org \
--to=kuba@kernel.org \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=gustavo@embeddedor.com \
--cc=michael.chan@broadcom.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.