net: asix: fix fortify warning
authorDmitry Antipov <dmantipov@yandex.ru>
Mon, 11 Dec 2023 09:05:32 +0000 (12:05 +0300)
committerJakub Kicinski <kuba@kernel.org>
Tue, 12 Dec 2023 21:20:37 +0000 (13:20 -0800)
commit2a62644800208fcba79a55b297ec0d9aad115221
tree68813d8935f7def9770eb4cbac3afac7997bdcd7
parent609c767f2c5505f104ed6bbb3554158131913f86
net: asix: fix fortify warning

When compiling with gcc version 14.0.0 20231129 (experimental) and
CONFIG_FORTIFY_SOURCE=y, I've noticed the following warning:

...
In function 'fortify_memcpy_chk',
    inlined from 'ax88796c_tx_fixup' at drivers/net/ethernet/asix/ax88796c_main.c:287:2:
./include/linux/fortify-string.h:588: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]
  588 |                         __read_overflow2_field(q_size_field, size);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...

This call to 'memcpy()' is interpreted as an attempt to copy TX_OVERHEAD
(which is 8) bytes from 4-byte 'sop' field of 'struct tx_pkt_info' and
thus overread warning is issued. Since we actually want to copy both
'sop' and 'seg' fields at once, use the convenient 'struct_group()' here.

Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
Acked-by: Ɓukasz Stelmach <l.stelmach@samsung.com>
Link: https://lore.kernel.org/r/20231211090535.9730-1-dmantipov@yandex.ru
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/asix/ax88796c_main.c
drivers/net/ethernet/asix/ax88796c_main.h