• Kees Cook's avatar
    can: flexcan: Use struct_group() to zero struct flexcan_regs regions · c92a08c1
    Kees Cook authored
    In preparation for FORTIFY_SOURCE performing compile-time and run-time
    field bounds checking for memset(), avoid intentionally writing across
    neighboring fields.
    
    Add struct_group() to mark both regions of struct flexcan_regs that get
    initialized to zero. Avoid the future warnings:
    
    In function 'fortify_memset_chk',
        inlined from 'memset_io' at ./include/asm-generic/io.h:1169:2,
        inlined from 'flexcan_ram_init' at drivers/net/can/flexcan.c:1403:2:
    ./include/linux/fortify-string.h:199:4: warning: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Wattribute-warning]
      199 |    __write_overflow_field(p_size_field, size);
          |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In function 'fortify_memset_chk',
        inlined from 'memset_io' at ./include/asm-generic/io.h:1169:2,
        inlined from 'flexcan_ram_init' at drivers/net/can/flexcan.c:1408:3:
    ./include/linux/fortify-string.h:199:4: warning: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Wattribute-warning]
      199 |    __write_overflow_field(p_size_field, size);
          |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Cc: Wolfgang Grandegger <wg@grandegger.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: linux-can@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Acked-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    c92a08c1
flexcan.c 66.7 KB