Re: [PATCH v2 5/6] bna: Avoid clashing function prototypes

From: Gustavo A. R. Silva
Date: Wed Nov 02 2022 - 01:23:51 EST




On 10/29/22 02:12, Kees Cook wrote:
On Thu, Oct 27, 2022 at 03:20:47PM -0500, Gustavo A. R. Silva wrote:
When built with Control Flow Integrity, function prototypes between
caller and function declaration must match. These mismatches are visible
at compile time with the new -Wcast-function-type-strict in Clang[1].

Fix a total of 227 warnings like these:

drivers/net/ethernet/brocade/bna/bna_enet.c:519:3: warning: cast from 'void (*)(struct bna_ethport *, enum bna_ethport_event)' to 'bfa_fsm_t' (aka 'void (*)(void *, int)') converts to incompatible function type [-Wcast-function-type-strict]
bfa_fsm_set_state(ethport, bna_ethport_sm_down);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The bna state machine code heavily overloads its state machine functions,
so these have been separated into their own sets of structs, enums,
typedefs, and helper functions. There are almost zero binary code changes,
all seem to be related to header file line numbers changing, or the
addition of the new stats helper.

This looks like it borrowed from
https://lore.kernel.org/linux-hardening/20220929230334.2109344-1-keescook@xxxxxxxxxxxx/
Nice to get a couple hundred more fixed. :)

Yep; you're right. That's exactly the patch I was staring at
while doing these changes. :)


[1] https://reviews.llvm.org/D134831
Signed-off-by: Gustavo A. R. Silva <gustavoars@xxxxxxxxxx>
---
Changes in v2:
- None. This patch is new in the series.

This is relatively stand-alone (not an iw_handler patch), so it could
also go separately too.

My criteria here was that all these patches avoid clashing function
prototypes. So, they could be put together into a series, regardless
if they are "iw_handler" related patches.

Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx>

Thanks!
--
Gustavo