Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2635587lqp; Mon, 25 Mar 2024 05:15:36 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWG9MrOOk7dJHIkLFxbyOVWHrd/nDd+dGVNJSxxCm8nx5pyAWSJRL69w7qKnbR9T+ERMrO8pVpZVCkKVzuEId1VSV/NZZLhcsJjS/ttzQ== X-Google-Smtp-Source: AGHT+IHJ2dzCqEqsA/F/re84a8Pa4Bs4uPuxUIVu7ZTEs+aE117VyW0w+5tmjBRUCuYS/Rz6/UvR X-Received: by 2002:a05:6358:6389:b0:17e:b64b:e0e5 with SMTP id k9-20020a056358638900b0017eb64be0e5mr7999180rwh.15.1711368935732; Mon, 25 Mar 2024 05:15:35 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711368935; cv=pass; d=google.com; s=arc-20160816; b=a7PZZBsU+VJpNyOAK0HdMM+Ampo0K6OjoqrYeX6tsRsgRyhC7cMAhxvc83AGD5I+78 FaogbQ8WWZSjHImhU3VtmBY07/B3ZLc5XcS4cmtiTBoGq1SvoofTKktRY99HoLP5zR7j uJcPlI2FckhpobEgdWlAjFMPAagTsJge5lkwKUqaxuiKz8JfvOf0fS/WLCNp1zgAiIfl RZXC94KYT/leMII0VMUytEuTSNoafbeD9XkksaIF1Cmc1GY3l2NuC8dWLo83gAfEhGwc F/iGrZyseuo7KG402zBwwjeJc0tXRMrMCz3MmtIJgcRB8PlI6vMAQygPcEx0Z5u//zL+ XObQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=Qsia42gweRLyOU3l0MSa8wwcofIXNX7F1pTyjnYsl5A=; fh=FtlDdmN+ONsvI3WuV6ZM+mOS+M9gdsQYTxH555msMDY=; b=NxxsfhcDbsxLzmxFR6l7kRc7MsX3zoJgJhEy9r8xuA7oKXuXcVLoc8+YEvNIx3560B 9tZa8fAWyXBNSwNakHR2Bl9go1r4ZZtMtSQIuVwNJUy8Pc2E4XDgQKCRrEX3JT3bcLHN AL51cQDRvLyOq8Eo2afq3cdOJi+NfxoRiDlKeZzx7jvTb2LMsu7crOWP8nE3apZo/SLO TOvPaqfip9oxE663zZ2RewvdxmryHNy0qYnyPR6ZxJe2qR6xtKaF6jVPsHGgv0qg4JTa KB8Rt/izpoEOiYSwZteeFwl8aow8DJhzALeD/o4aLr/NvA9ZQ0TjH2DSbGJ5bzUy6Pj8 XB0w==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=VRvhSirz; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-116346-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-116346-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id j11-20020a65430b000000b005dc85a7bfe6si7340982pgq.109.2024.03.25.05.15.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Mar 2024 05:15:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-116346-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=VRvhSirz; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-116346-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-116346-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 19CE0287D6A for ; Mon, 25 Mar 2024 12:08:26 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 63D4129918F; Mon, 25 Mar 2024 03:42:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VRvhSirz" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 147BC2987D3; Sun, 24 Mar 2024 23:52:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711324363; cv=none; b=Z2PIOWbIt01oICXaMOaivEWHZ9MTdKRUQ/+Ov4YUui3s3JuCWIY9qZVM3h5XlktTlUeLc4+h8UWK/IEPMh+alBgBWRMY/xEp6rI8FMFHao46Oj6u+/asyU5Sy+S6T39paMu0eg1xVnTsl77gjMSN43pK3xocrEcgnmOgXmsYfOE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711324363; c=relaxed/simple; bh=uVrNHrQbG48tlepRvvnPkOqOGzG/mveUSwCDgzNolHU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=izxcHzn/4rUYraB+hPE3RecGTLa58vTWT5YsOkw83wU7Dr20E2wzXVJzzpXUIHR3XBBmwvODdH29f2Sm4ZWBzzHUirYhLnTRy56r4RgjDhrMoEG8pWKUrAnMu1/Gn5H57hiij9jw6xC6OYAoVdysB176bJDjjm5VcpXZiJnDadY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VRvhSirz; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 364D3C43394; Sun, 24 Mar 2024 23:52:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1711324361; bh=uVrNHrQbG48tlepRvvnPkOqOGzG/mveUSwCDgzNolHU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VRvhSirzHsf2VpWx3VPOwkX2dho90ArskvX5WM9DMxuTfsIaTAItKeVd+DUXu5LFI s1BRJ81plD2KrbfSJ5CcKTCBKWATNB/uTB/FiK2q50f3tbqsyYKP2WI0JoIJvT3Rp3 8gJ83wUot7CHrmxkeDo7dW//YV7YZtN05ZJzhmQq4t+zSCmqEhRe8d12kzHZTSCT+A 4i2zIw0KA+TwhtcFF/tfNXRRUAa6b74jjbcbprtDnz0jnAQ6Xcl9ND2YsACuFhPryv UKBv51ZNXYxLSH6ie0yCJ6tmK+M6jzsTDJIa0/FVCfBsDTKo76nFIxGpxuUvNv8aba mgMUXfdl29EqQ== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Arnd Bergmann , "Martin K . Petersen" , Sasha Levin Subject: [PATCH 4.19 129/148] scsi: csiostor: Avoid function pointer casts Date: Sun, 24 Mar 2024 19:49:53 -0400 Message-ID: <20240324235012.1356413-130-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240324235012.1356413-1-sashal@kernel.org> References: <20240324235012.1356413-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit From: Arnd Bergmann [ Upstream commit 9f3dbcb5632d6876226031d552ef6163bb3ad215 ] csiostor uses function pointer casts to keep the csio_ln_ev state machine hidden, but this causes warnings about control flow integrity (KCFI) violations in clang-16 and higher: drivers/scsi/csiostor/csio_lnode.c:1098:33: error: cast from 'void (*)(struct csio_lnode *, enum csio_ln_ev)' to 'csio_sm_state_t' (aka 'void (*)(void *, unsigned int)') converts to incompatible function type [-Werror,-Wcast-function-type-strict] 1098 | return (csio_get_state(ln) == ((csio_sm_state_t)csio_lns_ready)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/csiostor/csio_lnode.c:1369:29: error: cast from 'void (*)(struct csio_lnode *, enum csio_ln_ev)' to 'csio_sm_state_t' (aka 'void (*)(void *, unsigned int)') converts to incompatible function type [-Werror,-Wcast-function-type-strict] 1369 | if (csio_get_state(ln) == ((csio_sm_state_t)csio_lns_uninit)) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/csiostor/csio_lnode.c:1373:29: error: cast from 'void (*)(struct csio_lnode *, enum csio_ln_ev)' to 'csio_sm_state_t' (aka 'void (*)(void *, unsigned int)') converts to incompatible function type [-Werror,-Wcast-function-type-strict] 1373 | if (csio_get_state(ln) == ((csio_sm_state_t)csio_lns_ready)) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/csiostor/csio_lnode.c:1377:29: error: cast from 'void (*)(struct csio_lnode *, enum csio_ln_ev)' to 'csio_sm_state_t' (aka 'void (*)(void *, unsigned int)') converts to incompatible function type [-Werror,-Wcast-function-type-strict] 1377 | if (csio_get_state(ln) == ((csio_sm_state_t)csio_lns_offline)) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Move the enum into a shared header so the correct types can be used without the need for casts. Fixes: a3667aaed569 ("[SCSI] csiostor: Chelsio FCoE offload driver") Signed-off-by: Arnd Bergmann Link: https://lore.kernel.org/r/20240213100518.457623-1-arnd@kernel.org Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin --- drivers/scsi/csiostor/csio_defs.h | 18 ++++++++++++++++-- drivers/scsi/csiostor/csio_lnode.c | 8 ++++---- drivers/scsi/csiostor/csio_lnode.h | 13 ------------- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/drivers/scsi/csiostor/csio_defs.h b/drivers/scsi/csiostor/csio_defs.h index c38017b4af982..e50e93e7fe5a1 100644 --- a/drivers/scsi/csiostor/csio_defs.h +++ b/drivers/scsi/csiostor/csio_defs.h @@ -73,7 +73,21 @@ csio_list_deleted(struct list_head *list) #define csio_list_prev(elem) (((struct list_head *)(elem))->prev) /* State machine */ -typedef void (*csio_sm_state_t)(void *, uint32_t); +struct csio_lnode; + +/* State machine evets */ +enum csio_ln_ev { + CSIO_LNE_NONE = (uint32_t)0, + CSIO_LNE_LINKUP, + CSIO_LNE_FAB_INIT_DONE, + CSIO_LNE_LINK_DOWN, + CSIO_LNE_DOWN_LINK, + CSIO_LNE_LOGO, + CSIO_LNE_CLOSE, + CSIO_LNE_MAX_EVENT, +}; + +typedef void (*csio_sm_state_t)(struct csio_lnode *ln, enum csio_ln_ev evt); struct csio_sm { struct list_head sm_list; @@ -83,7 +97,7 @@ struct csio_sm { static inline void csio_set_state(void *smp, void *state) { - ((struct csio_sm *)smp)->sm_state = (csio_sm_state_t)state; + ((struct csio_sm *)smp)->sm_state = state; } static inline void diff --git a/drivers/scsi/csiostor/csio_lnode.c b/drivers/scsi/csiostor/csio_lnode.c index 98944fb3f0b85..1c4e1c86c1d2f 100644 --- a/drivers/scsi/csiostor/csio_lnode.c +++ b/drivers/scsi/csiostor/csio_lnode.c @@ -1095,7 +1095,7 @@ csio_handle_link_down(struct csio_hw *hw, uint8_t portid, uint32_t fcfi, int csio_is_lnode_ready(struct csio_lnode *ln) { - return (csio_get_state(ln) == ((csio_sm_state_t)csio_lns_ready)); + return (csio_get_state(ln) == csio_lns_ready); } /*****************************************************************************/ @@ -1367,15 +1367,15 @@ csio_free_fcfinfo(struct kref *kref) void csio_lnode_state_to_str(struct csio_lnode *ln, int8_t *str) { - if (csio_get_state(ln) == ((csio_sm_state_t)csio_lns_uninit)) { + if (csio_get_state(ln) == csio_lns_uninit) { strcpy(str, "UNINIT"); return; } - if (csio_get_state(ln) == ((csio_sm_state_t)csio_lns_ready)) { + if (csio_get_state(ln) == csio_lns_ready) { strcpy(str, "READY"); return; } - if (csio_get_state(ln) == ((csio_sm_state_t)csio_lns_offline)) { + if (csio_get_state(ln) == csio_lns_offline) { strcpy(str, "OFFLINE"); return; } diff --git a/drivers/scsi/csiostor/csio_lnode.h b/drivers/scsi/csiostor/csio_lnode.h index 372a67d122d38..607698a0f0631 100644 --- a/drivers/scsi/csiostor/csio_lnode.h +++ b/drivers/scsi/csiostor/csio_lnode.h @@ -53,19 +53,6 @@ extern int csio_fcoe_rnodes; extern int csio_fdmi_enable; -/* State machine evets */ -enum csio_ln_ev { - CSIO_LNE_NONE = (uint32_t)0, - CSIO_LNE_LINKUP, - CSIO_LNE_FAB_INIT_DONE, - CSIO_LNE_LINK_DOWN, - CSIO_LNE_DOWN_LINK, - CSIO_LNE_LOGO, - CSIO_LNE_CLOSE, - CSIO_LNE_MAX_EVENT, -}; - - struct csio_fcf_info { struct list_head list; uint8_t priority; -- 2.43.0