All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: Ivan Malov <ivan.malov@arknetworks.am>
Cc: dev@dpdk.org, Andy Moreton <andy.moreton@amd.com>,
	Viacheslav Galaktionov <viacheslav.galaktionov@arknetworks.am>,
	Roman Zhukov <Roman.Zhukov@arknetworks.am>,
	Pieter Jansen van Vuuren <pieter.jansen-van-vuuren@amd.com>,
	Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Subject: Re: [PATCH v2 00/14] common/sfc_efx/base: fix code analysis issues
Date: Wed, 12 Aug 2026 19:35:03 -0700	[thread overview]
Message-ID: <20260812193503.46521753@phoenix.local> (raw)
In-Reply-To: <20260812170834.8443-1-ivan.malov@arknetworks.am>

On Wed, 12 Aug 2026 21:08:20 +0400
Ivan Malov <ivan.malov@arknetworks.am> wrote:

> This series addresses code analysis defects in the
> common/sfc_efx/base library.
> 
> The first four patches fix excessive stack consumption in
> MCDI helper functions, each exceeding 1 KB on-stack, by
> switching to heap-allocated payload buffers.
> 
> The remaining ten patches correct SAL annotations, add NULL
> checks across netport and filter helpers, resolving
> uninitialised memory, buffer overrun, and potential
> dereference issues. The final patch widens loop
> variable types to address a CodeQL warning.
> 
> 
> v2:
> 
> - note for the future AI reviews: apply this on top of
>   the 'next-net-main' branch


Still has AI review issues.

Reviewed v2 applied on c1a46b9 ("doc: remove unreferenced KNI and
examples figures"). All 14 apply cleanly. Comparing commit contents
against v1, only patches 11 and 13 have real changes; 12 differs only
in hunk offsets.

Addressed since v1, all correct as far as I can tell:

 - 11/14 now reads MORE_ENTRIES with MCDI_OUT_DWORD_FIELD against
   MAC_STATISTICS_DESCRIPTOR_OUT_FLAGS, so only LBN 0 is tested.
 - 13/14 adds matched_mask so *enum_hwp is written only on the first
   match per SW flag. That restores the original selection order that
   the removed "mask_sw &= ~(flag_sw)" used to provide, including the
   case where several distinct SW flags are set.
 - 13/14 passes cap_enum_hw rather than MC_CMD_FEC_AUTO as the default,
   so a request with no FEC bits keeps MC_CMD_FEC_NONE.
 - __success() placement is now consistent between 09/14 and 13/14.

Patch 11/14: common/sfc_efx/base: fix flex array in netport stat describe

Error: count and stride are still used to index the response buffer with
no bound derived from the response length. This was the main finding on
v1 and is unchanged:

	stride = MCDI_OUT_DWORD(req, MAC_STATISTICS_DESCRIPTOR_OUT_ENTRY_SIZE);
	count = MCDI_OUT_DWORD(req, MAC_STATISTICS_DESCRIPTOR_OUT_ENTRY_COUNT);
	...
		for (i = 0; i < count; ++i) {
			efx_np_stat_describe(entries + i * stride,

Both fields come from firmware. entries points at payload + 20 in a
1020-byte allocation and efx_np_stat_describe() reads 8 bytes per entry,
so any count above (out_sz - 20) / stride reads bytes that were never
written, and count * stride above 1000 reads past the end of the
allocation. The old ENTRIES_NUM(out_sz) expression was wrong for
stride > 8, as the commit message says, but it did bound the loop by the
data actually received; nothing replaces that bound.

	if (stride < MC_CMD_STAT_DESC_LEN ||
	    count > (out_sz -
		     MC_CMD_MAC_STATISTICS_DESCRIPTOR_OUT_ENTRIES_OFST) /
		    stride) {
		rc = EMSGSIZE;
		goto fail4;
	}

The stride test has to come first, otherwise stride == 0 divides by
zero.

Patch 13/14: common/sfc_efx/base: rework SW mask to HW enum converter

Warning: In the fixed-link branch the programmed technology still
changes. link_tech is initialised to MC_CMD_ETH_TECH_NONE and previously
stayed NONE when no requested tech bit was present in the map; passing
MC_CMD_ETH_TECH_AUTO as enum_hw_def now overwrites it. Unlike the FEC
call, which v2 changed to pass the pre-computed value, this one keeps
the hardcoded default. That may well be the intent, but the commit
message is unchanged from v1 and still describes the patch only as a
refactor plus annotation fix; it does not mention the new enum_hw_def
parameter or this behaviour change. Please say so in the commit message,
or pass link_tech to keep the old value.

Patch 01-04: common/sfc_efx/base: reduce stack in ...

Info: Unchanged from v1, repeating for the record. The four conversions
open-code MAX(IN_LEN, OUT_LEN) where EFX_MCDI_BUF_SIZE() exists and also
rounds up to a dword multiple and enforces a two-dword minimum. The
rounding matters because ef10_mcdi_send_request() reads the payload a
full dword at a time. All four current lengths are dword multiples so
there is no defect today, but the property is lost for future length
changes.

Patch 05/14: common/sfc_efx/base: fix filter saved spec handling

Info: Unchanged from v1. Both added NULL checks are unreachable:
saved_spec == NULL forces EF10_FILTER_ADD_NEW in
ef10_filter_add_select_action(), so ADD_STORE and ADD_REPLACE both imply
a non-NULL saved_spec. The __in_opt annotations are right; the STORE
branch already asserts its sibling invariant one line above, so
EFSYS_ASSERT(saved_spec != NULL) would match local style rather than
silently skipping the efs_overridden_spec assignment.

Patch 09/14 and 13/14

Info: The two are consistent with each other now, but both put
__success() on its own line above "static". Existing uses in the tree
put it on the return type line, e.g. ef10_nvram.c:941

	__checkReturn	__success(return != B_FALSE)	boolean_t
	ef10_nvram_buffer_find_item(


  parent reply	other threads:[~2026-08-13  2:35 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-11 17:48 [PATCH 00/14] common/sfc_efx/base: fix code analysis issues Ivan Malov
2026-08-11 17:48 ` [PATCH 01/14] common/sfc_efx/base: reduce stack in RSS context table write Ivan Malov
2026-08-11 17:48 ` [PATCH 02/14] common/sfc_efx/base: reduce stack in get addr regions MCDI Ivan Malov
2026-08-11 17:48 ` [PATCH 03/14] common/sfc_efx/base: reduce stack in set " Ivan Malov
2026-08-11 17:48 ` [PATCH 04/14] common/sfc_efx/base: reduce stack in netport stat describe Ivan Malov
2026-08-11 17:48 ` [PATCH 05/14] common/sfc_efx/base: fix filter saved spec handling Ivan Malov
2026-08-11 17:48 ` [PATCH 06/14] common/sfc_efx/base: fix annotations in client MAC addr get Ivan Malov
2026-08-11 17:48 ` [PATCH 07/14] common/sfc_efx/base: fix annotations in HW-SW mask converter Ivan Malov
2026-08-11 17:48 ` [PATCH 08/14] common/sfc_efx/base: fix annotations in get fixed port props Ivan Malov
2026-08-11 17:48 ` [PATCH 09/14] common/sfc_efx/base: fix annotations in SW-HW enum converter Ivan Malov
2026-08-11 17:48 ` [PATCH 10/14] common/sfc_efx/base: fix annotation in netport stat describe Ivan Malov
2026-08-11 17:48 ` [PATCH 11/14] common/sfc_efx/base: fix flex array " Ivan Malov
2026-08-11 17:48 ` [PATCH 12/14] common/sfc_efx/base: fix filter in SW-HW mask converter Ivan Malov
2026-08-11 17:48 ` [PATCH 13/14] common/sfc_efx/base: rework SW mask to HW enum converter Ivan Malov
2026-08-11 17:48 ` [PATCH 14/14] common/sfc_efx/base: cleanup wider type comparisons in loops Ivan Malov
2026-08-11 20:24 ` [PATCH 00/14] common/sfc_efx/base: fix code analysis issues Stephen Hemminger
2026-08-12 17:08 ` [PATCH v2 " Ivan Malov
2026-08-12 17:08   ` [PATCH v2 01/14] common/sfc_efx/base: reduce stack in RSS context table write Ivan Malov
2026-08-12 17:08   ` [PATCH v2 02/14] common/sfc_efx/base: reduce stack in get addr regions MCDI Ivan Malov
2026-08-12 17:08   ` [PATCH v2 03/14] common/sfc_efx/base: reduce stack in set " Ivan Malov
2026-08-12 17:08   ` [PATCH v2 04/14] common/sfc_efx/base: reduce stack in netport stat describe Ivan Malov
2026-08-12 17:08   ` [PATCH v2 05/14] common/sfc_efx/base: fix filter saved spec handling Ivan Malov
2026-08-12 17:08   ` [PATCH v2 06/14] common/sfc_efx/base: fix annotations in client MAC addr get Ivan Malov
2026-08-12 17:08   ` [PATCH v2 07/14] common/sfc_efx/base: fix annotations in HW-SW mask converter Ivan Malov
2026-08-12 17:08   ` [PATCH v2 08/14] common/sfc_efx/base: fix annotations in get fixed port props Ivan Malov
2026-08-12 17:08   ` [PATCH v2 09/14] common/sfc_efx/base: fix annotations in SW-HW enum converter Ivan Malov
2026-08-12 17:08   ` [PATCH v2 10/14] common/sfc_efx/base: fix annotation in netport stat describe Ivan Malov
2026-08-12 17:08   ` [PATCH v2 11/14] common/sfc_efx/base: fix flex array " Ivan Malov
2026-08-12 17:08   ` [PATCH v2 12/14] common/sfc_efx/base: fix filter in SW-HW mask converter Ivan Malov
2026-08-12 17:08   ` [PATCH v2 13/14] common/sfc_efx/base: rework SW mask to HW enum converter Ivan Malov
2026-08-12 17:08   ` [PATCH v2 14/14] common/sfc_efx/base: cleanup wider type comparisons in loops Ivan Malov
2026-08-13  2:35   ` Stephen Hemminger [this message]
2026-08-13  3:37     ` [PATCH v2 00/14] common/sfc_efx/base: fix code analysis issues Ivan Malov
2026-08-14 12:54 ` [PATCH v3 " Ivan Malov
2026-08-14 12:54   ` [PATCH v3 01/14] common/sfc_efx/base: reduce stack in RSS context table write Ivan Malov
2026-08-14 12:54   ` [PATCH v3 02/14] common/sfc_efx/base: reduce stack in get addr regions MCDI Ivan Malov
2026-08-14 12:54   ` [PATCH v3 03/14] common/sfc_efx/base: reduce stack in set " Ivan Malov
2026-08-14 12:54   ` [PATCH v3 04/14] common/sfc_efx/base: reduce stack in netport stat describe Ivan Malov
2026-08-14 12:54   ` [PATCH v3 05/14] common/sfc_efx/base: fix filter saved spec handling Ivan Malov
2026-08-14 12:54   ` [PATCH v3 06/14] common/sfc_efx/base: fix annotations in client MAC addr get Ivan Malov
2026-08-14 12:54   ` [PATCH v3 07/14] common/sfc_efx/base: fix annotations in HW-SW mask converter Ivan Malov
2026-08-14 12:54   ` [PATCH v3 08/14] common/sfc_efx/base: fix annotations in get fixed port props Ivan Malov
2026-08-14 12:54   ` [PATCH v3 09/14] common/sfc_efx/base: fix annotations in SW-HW enum converter Ivan Malov
2026-08-14 12:54   ` [PATCH v3 10/14] common/sfc_efx/base: fix annotation in netport stat describe Ivan Malov
2026-08-14 12:54   ` [PATCH v3 11/14] common/sfc_efx/base: fix flex array " Ivan Malov
2026-08-14 12:54   ` [PATCH v3 12/14] common/sfc_efx/base: fix filter in SW-HW mask converter Ivan Malov
2026-08-14 12:54   ` [PATCH v3 13/14] common/sfc_efx/base: rework SW mask to HW enum converter Ivan Malov
2026-08-14 12:54   ` [PATCH v3 14/14] common/sfc_efx/base: cleanup wider type comparisons in loops Ivan Malov
2026-08-15 15:44   ` [PATCH v3 00/14] common/sfc_efx/base: fix code analysis issues Stephen Hemminger
2026-08-14 12:55 ` [PATCH v3 0/3] net/sfc: miscellaneous bug fixes Ivan Malov
2026-08-14 12:55   ` [PATCH v3 1/3] net/sfc: set Rx queue type flags from scratch on queue setup Ivan Malov
2026-08-14 12:55   ` [PATCH v3 2/3] net/sfc: drop wrong static qualifier from iterator variable Ivan Malov
2026-08-14 12:55   ` [PATCH v3 3/3] common/sfc_efx/base: fix reading advertised autoneg ability Ivan Malov
2026-08-14 12:56 ` [PATCH v3 0/3] common/sfc_efx/base: add VADAPTER statistics for Medford4 Ivan Malov
2026-08-14 12:56   ` [PATCH v3 1/3] common/sfc_efx/base: update MCDI headers Ivan Malov
2026-08-14 12:56   ` [PATCH v3 2/3] common/sfc_efx/base: add support for VADAPTER statistics IDs Ivan Malov
2026-08-14 12:56   ` [PATCH v3 3/3] common/sfc_efx/base: switch netport stats to use EVB port ID Ivan Malov
2026-08-14 12:56 ` [PATCH v3 0/6] common/sfc_efx/base: add Medford4 VF support Ivan Malov
2026-08-14 12:56   ` [PATCH v3 1/6] common/sfc_efx/base: let Medford4 PF manage VFs Ivan Malov
2026-08-14 12:56   ` [PATCH v3 2/6] common/sfc_efx/base: indicate dummy netport properties on VF Ivan Malov
2026-08-14 12:56   ` [PATCH v3 3/6] common/sfc_efx/base: skip netport event subscriptions on VFs Ivan Malov
2026-08-14 12:56   ` [PATCH v3 4/6] common/sfc_efx/base: deny tuning FCS and flow control to VFs Ivan Malov
2026-08-14 12:56   ` [PATCH v3 5/6] common/sfc_efx/base: deny periodic MAC stats delivery " Ivan Malov
2026-08-14 12:56   ` [PATCH v3 6/6] doc: announce VF support of AMD Solarflare X45xx family NICs Ivan Malov

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=20260812193503.46521753@phoenix.local \
    --to=stephen@networkplumber.org \
    --cc=Roman.Zhukov@arknetworks.am \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=andy.moreton@amd.com \
    --cc=dev@dpdk.org \
    --cc=ivan.malov@arknetworks.am \
    --cc=pieter.jansen-van-vuuren@amd.com \
    --cc=viacheslav.galaktionov@arknetworks.am \
    /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.