Re: [PATCH] RDMA/hfi1: use a struct group to avoid warning
From: Jason Gunthorpe
Date: Mon Apr 07 2025 - 15:06:51 EST
On Thu, Apr 03, 2025 at 04:47:53PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@xxxxxxxx>
>
> On gcc-11 and earlier, the driver sometimes produces a warning
> for memset:
>
> In file included from include/linux/string.h:392,
> from drivers/infiniband/hw/hfi1/mad.c:6:
> In function 'fortify_memset_chk',
> inlined from '__subn_get_opa_hfi1_cong_log' at drivers/infiniband/hw/hfi1/mad.c:3873:2,
> inlined from 'subn_get_opa_sma' at drivers/infiniband/hw/hfi1/mad.c:4114:9:
> include/linux/fortify-string.h:480:4: error: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Werror]
> __write_overflow_field(p_size_field, size);
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> This seems to be a false positive, and I found no nice way to rewrite
> the code to avoid the warning, but adding a a struct group works.
Er.. so do we really want to fix it or just ignore this on gcc-11? Or
is there really a compile bug here and it is mis-generating the code?
The unneeded struct group seems ugly to me?
Jason