Re: [PATCH] RDMA/hfi1: use a struct group to avoid warning
From: Arnd Bergmann
Date: Tue Apr 08 2025 - 08:56:07 EST
On Mon, Apr 7, 2025, at 20:27, Jason Gunthorpe wrote:
> 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?
Having a clean build would be nice though. Do you think a patch
that just turns off the warning locally would be better?
Arnd