scsi: bfa: Fix function pointer type mismatch for hcb_qe->cbfn
[ Upstream commit b6960023 ] Some callback functions used here take a boolean argument, others take a status argument. This breaks KCFI type checking, so clang now warns about the function pointer cast: drivers/scsi/bfa/bfad_bsg.c:2138:29: error: cast from 'void (*)(void *, enum bfa_status)' to 'bfa_cb_cbfn_t' (aka 'void (*)(void *, enum bfa_boolean)') converts to incompatible function type [-Werror,-Wcast-function-type-strict] Assuming the code is actually correct here and the callers always match the argument types of the callee, rework this to replace the explicit cast with a union of the two pointer types. This does not change the behavior of the code, so if something is actually broken here, a larger rework may be necessary. Fixes: 37ea0558 ("[SCSI] bfa: Added support to collect and reset fcport stats") Fixes: 3ec4f2c8 ("[SCSI] bfa: Added support to configure QOS and collect stats.") Reviewed-by:Kees Cook <keescook@chromium.org> Signed-off-by:
Arnd Bergmann <arnd@arndb.de> Link: https://lore.kernel.org/r/20240222124433.2046570-1-arnd@kernel.org Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
Showing
- drivers/scsi/bfa/bfa.h 8 additions, 1 deletiondrivers/scsi/bfa/bfa.h
- drivers/scsi/bfa/bfa_core.c 1 addition, 3 deletionsdrivers/scsi/bfa/bfa_core.c
- drivers/scsi/bfa/bfa_ioc.h 6 additions, 2 deletionsdrivers/scsi/bfa/bfa_ioc.h
- drivers/scsi/bfa/bfad_bsg.c 4 additions, 7 deletionsdrivers/scsi/bfa/bfad_bsg.c
Loading