37126399da
The bfa driver is full of state machines and a generic abstraction layer for them. This relies on casting function pointers, but that is no longer allowed when CONFIG_CFI_CLANG is enabled and causes a huge number of warnings like: drivers/scsi/bfa/bfad.c:169:3: error: cast from 'void (*)(struct bfad_s *, enum bfad_sm_event)' to 'bfa_sm_t' (aka 'void (*)(void *, int)') converts to incompatible function type [-Werror,-Wcast-function-type-strict] bfa_sm_set_state(bfad, bfad_sm_created); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Rework the mechanism to no longer require the function pointer casts, by having separate types for each individual state machine. This in turn requires moving the enum definitions for each state machine into the header files in order to define the typedef. Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Link: https://lore.kernel.org/r/20240222124433.2046570-2-arnd@kernel.org Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
||
---|---|---|
.. | ||
bfa_core.c | ||
bfa_cs.h | ||
bfa_defs_fcs.h | ||
bfa_defs_svc.h | ||
bfa_defs.h | ||
bfa_fc.h | ||
bfa_fcbuild.c | ||
bfa_fcbuild.h | ||
bfa_fcpim.c | ||
bfa_fcpim.h | ||
bfa_fcs_fcpim.c | ||
bfa_fcs_lport.c | ||
bfa_fcs_rport.c | ||
bfa_fcs.c | ||
bfa_fcs.h | ||
bfa_hw_cb.c | ||
bfa_hw_ct.c | ||
bfa_ioc_cb.c | ||
bfa_ioc_ct.c | ||
bfa_ioc.c | ||
bfa_ioc.h | ||
bfa_modules.h | ||
bfa_plog.h | ||
bfa_port.c | ||
bfa_port.h | ||
bfa_svc.c | ||
bfa_svc.h | ||
bfa.h | ||
bfad_attr.c | ||
bfad_bsg.c | ||
bfad_bsg.h | ||
bfad_debugfs.c | ||
bfad_drv.h | ||
bfad_im.c | ||
bfad_im.h | ||
bfad.c | ||
bfi_ms.h | ||
bfi_reg.h | ||
bfi.h | ||
Makefile |