> -----Original Message----- > From: Intel-wired-lan <[email protected]> On Behalf Of > Simon Horman > Sent: Tuesday, May 19, 2026 10:04 PM > To: Loktionov, Aleksandr <[email protected]> > Cc: [email protected]; Nguyen, Anthony L > <[email protected]>; [email protected]; Kubalewski, > Arkadiusz <[email protected]> > Subject: Re: [Intel-wired-lan] [PATCH iwl-next] iavf: convert crit_section to > DECLARE_BITMAP > > On Fri, May 15, 2026 at 08:38:36AM +0200, Aleksandr Loktionov wrote: > > struct iavf_adapter::crit_section is a bit-lock container indexed by > > values from enum iavf_critical_section_t (__IAVF_IN_REMOVE_TASK). > > It is manipulated exclusively through the kernel atomic bitops API: > > set_bit(), clear_bit(), test_bit(), test_and_set_bit(). > > > > It is declared as a bare 'unsigned long' and every call site passes > > '&adapter->crit_section'. That is functionally correct -- the bit > > index is a compile-time enum value well below BITS_PER_LONG so > > BIT_WORD(nr) is always 0 and only the singleton word is ever touched > > -- but it relies on layout coincidence rather than on the documented > > contract of the bitops API, which is defined in terms of 'unsigned > > long *' arrays. > > > > Static analyzers that model the same contract flag every such call > > site with ARRAY_VS_SINGLETON because the address of a scalar is passed > > where an array pointer is expected. > > > > Convert the field to a proper bitmap using DECLARE_BITMAP() sized by a > > new sentinel __IAVF_CRIT_SECTION_NBITS at the end of the enum. The > > underlying storage is unchanged (a single unsigned long word on every > > architecture Linux supports), so there is no functional or ABI change; > > the type simply becomes 'unsigned long[1]' which matches what the > > bitops API expects and silences the analyzer warnings permanently. > > > > Drop the leading '&' at every call site, since arrays decay to > > pointers. > > > > No functional change intended. > > > > Suggested-by: Arkadiusz Kubalewski <[email protected]> > > Signed-off-by: Aleksandr Loktionov <[email protected]> > > Reviewed-by: Simon Horman <[email protected]>
Tested-by: Patryk Holda <[email protected]>
