Received: by 2002:a05:6358:111d:b0:dc:6189:e246 with SMTP id f29csp129513rwi; Wed, 2 Nov 2022 10:04:46 -0700 (PDT) X-Google-Smtp-Source: AMsMyM58P31ipLfmbo3fClqbw93h0dfPOVYZA+KjtwYTa9UgQTSrc5uHSCPfKbqiYlTwRldF7uXI X-Received: by 2002:a17:907:80b:b0:77a:86a1:db52 with SMTP id wv11-20020a170907080b00b0077a86a1db52mr24853961ejb.294.1667408685971; Wed, 02 Nov 2022 10:04:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667408685; cv=none; d=google.com; s=arc-20160816; b=vKQPFxVWB3b1L4Hk+xNng27TuXo7FiTTc/aTVwDZG+yjKV7ICHmsGVucztF76FrWxL ebUKufkIGSa00yyiKrCwU6OBmHw7IpYmDpqZQmbzxhggvkIq6ik09kHBEmjavbyqT2pY uCENqPmrCtw7XZZe/wS9gs0De8Sh+WUkOVnDtYoKMRVxJa8HeLFP+cP9i8HOVJKld+60 aACzTX9uoG6a+dPz/M92x4005rWDkqoTZpCnRLEc92jKhmojG/TUtTlGhIPK8wV2pwI5 kW7nHCwNgOvNQi0y5cIMJ0B4081zUIIzS2sqAhIcNSYXb1rYYzXpIGzJG85lEczHGl0X r94w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=mzKEJB0OQK0itXb5K4JgfEiz0PirDhrQW1HT/LBqIKg=; b=LLqm9rTpyKPgG2y5+z10xLRCuEpV/Zlcdrpx+mfE9wsQOYzqVaBHaPPvVJ8DnWgJiB TWyLUEgMUNOJs/SPyVbRAUBL7la5q7kut4hlg1PAjTpdRk7dkTwNtCH0NuG945Ta/V4b 6tIlgBQtX+qdv4H3RcIWoYTVSIXafZbEBpXz/NtlNKEfMBmFruCuPiBU2/Z/d+mozKTV mi7N1xe5q0T5Wjnm5NaXJ6CH+q+NfDBeEFNj9sj7sNaXdhAu5whzSR9ha6067AHlo3La 0i4DRVNgQSwJYs1aNv7CPM9LNzyc5OqTBVSNIS+6ZZE8FNhdGUrr+G6P0HfB9vl+vFS0 m9pA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=X8pvcmTH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id sb33-20020a1709076da100b00777581091d9si14854843ejc.634.2022.11.02.10.03.59; Wed, 02 Nov 2022 10:04:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=X8pvcmTH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230115AbiKBQJv (ORCPT + 98 others); Wed, 2 Nov 2022 12:09:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48428 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231124AbiKBQJo (ORCPT ); Wed, 2 Nov 2022 12:09:44 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1AF312C657; Wed, 2 Nov 2022 09:09:43 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id BFEF6B823B3; Wed, 2 Nov 2022 16:09:41 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9F27AC433C1; Wed, 2 Nov 2022 16:09:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1667405380; bh=rH9SDx9gcWaQDKMOE4tQEFHMGlG6Ovr3YPv8YZL1D+E=; h=From:To:Cc:Subject:Date:From; b=X8pvcmTHwIRH0+4izI0TjgR8sfIRkuxnTHfMZzblOT4a3y8IMs74XyARghHp029+7 mnsCqXfV+pibXiy7bTkxW1DMbQ+M1x3ziV0FWhiVm43lLK5auqUz6Bils7UUoNhWBQ 4VVAe5ANsa9LBPVCE9A9HNvb+eEft9sHqWbklZWzbE29ZVClB4EMAfG5S5koKq5TYi JrNGieTGU6Y2Oqhc6PlXbWfF3EiH0iuGGXCQdqA9B9sphxjIpHVzAEJHS7x7fkzE6I AcLzi2HdT1QH5YSWmILbOQcewhaWMTh12Nxe3Xysy+3SMn8o334Pnlc3Mp+9qy0t8T AcvxEuX4O4ypg== From: Nathan Chancellor To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, Nick Desaulniers , Tom Rix , Kees Cook , Sami Tolvanen , llvm@lists.linux.dev, linux-kernel@vger.kernel.org, patches@lists.linux.dev, Nathan Chancellor Subject: [PATCH] net: ethernet: ti: Fix return type of netcp_ndo_start_xmit() Date: Wed, 2 Nov 2022 09:09:33 -0700 Message-Id: <20221102160933.1601260-1-nathan@kernel.org> X-Mailer: git-send-email 2.38.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-8.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With clang's kernel control flow integrity (kCFI, CONFIG_CFI_CLANG), indirect call targets are validated against the expected function pointer prototype to make sure the call target is valid to help mitigate ROP attacks. If they are not identical, there is a failure at run time, which manifests as either a kernel panic or thread getting killed. A proposed warning in clang aims to catch these at compile time, which reveals: drivers/net/ethernet/ti/netcp_core.c:1944:21: error: incompatible function pointer types initializing 'netdev_tx_t (*)(struct sk_buff *, struct net_device *)' (aka 'enum netdev_tx (*)(struct sk_buff *, struct net_device *)') with an expression of type 'int (struct sk_buff *, struct net_device *)' [-Werror,-Wincompatible-function-pointer-types-strict] .ndo_start_xmit = netcp_ndo_start_xmit, ^~~~~~~~~~~~~~~~~~~~ 1 error generated. ->ndo_start_xmit() in 'struct net_device_ops' expects a return type of 'netdev_tx_t', not 'int'. Adjust the return type of netcp_ndo_start_xmit() to match the prototype's to resolve the warning and CFI failure. Link: https://github.com/ClangBuiltLinux/linux/issues/1750 Signed-off-by: Nathan Chancellor --- drivers/net/ethernet/ti/netcp_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/ti/netcp_core.c b/drivers/net/ethernet/ti/netcp_core.c index aba70bef4894..9eb9eaff4dc9 100644 --- a/drivers/net/ethernet/ti/netcp_core.c +++ b/drivers/net/ethernet/ti/netcp_core.c @@ -1261,7 +1261,7 @@ static int netcp_tx_submit_skb(struct netcp_intf *netcp, } /* Submit the packet */ -static int netcp_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev) +static netdev_tx_t netcp_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev) { struct netcp_intf *netcp = netdev_priv(ndev); struct netcp_stats *tx_stats = &netcp->stats; base-commit: 9abf2313adc1ca1b6180c508c25f22f9395cc780 -- 2.38.1