[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <01dbac10-fbe3-4211-bf8a-eb622df81f64@linux.dev>
Date: Sat, 8 Nov 2025 12:43:54 +0000
From: Vadim Fedorenko <vadim.fedorenko@...ux.dev>
To: Nathan Chancellor <nathan@...nel.org>, Andrew Lunn
<andrew+netdev@...n.ch>, "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>
Cc: Nick Desaulniers <nick.desaulniers+lkml@...il.com>,
Bill Wendling <morbo@...gle.com>, Justin Stitt <justinstitt@...gle.com>,
Kory Maincent <kory.maincent@...tlin.com>, netdev@...r.kernel.org,
llvm@...ts.linux.dev, patches@...ts.linux.dev
Subject: Re: [PATCH net-next] net: netcp: ethss: Fix type of first parameter
in hwtstamp stubs
On 08/11/2025 03:19, Nathan Chancellor wrote:
> When building with -Wincompatible-function-pointer-types-strict, a
> warning designed to catch control flow integrity violations at compile
> time, there are several instances in netcp_ethss.c when CONFIG_TI_CPTS
> is not set:
>
> drivers/net/ethernet/ti/netcp_ethss.c:3831:18: warning: incompatible function pointer types initializing 'int (*)(void *, struct kernel_hwtstamp_config *)' with an expression of type 'int (struct gbe_intf *, struct kernel_hwtstamp_config *)' [-Wincompatible-function-pointer-types-strict]
> 3831 | .hwtstamp_get = gbe_hwtstamp_get,
> | ^~~~~~~~~~~~~~~~
> drivers/net/ethernet/ti/netcp_ethss.c:3832:18: warning: incompatible function pointer types initializing 'int (*)(void *, struct kernel_hwtstamp_config *, struct netlink_ext_ack *)' with an expression of type 'int (struct gbe_intf *, struct kernel_hwtstamp_config *, struct netlink_ext_ack *)' [-Wincompatible-function-pointer-types-strict]
> 3832 | .hwtstamp_set = gbe_hwtstamp_set,
> | ^~~~~~~~~~~~~~~~
> drivers/net/ethernet/ti/netcp_ethss.c:3850:18: warning: incompatible function pointer types initializing 'int (*)(void *, struct kernel_hwtstamp_config *)' with an expression of type 'int (struct gbe_intf *, struct kernel_hwtstamp_config *)' [-Wincompatible-function-pointer-types-strict]
> 3850 | .hwtstamp_get = gbe_hwtstamp_get,
> | ^~~~~~~~~~~~~~~~
> drivers/net/ethernet/ti/netcp_ethss.c:3851:18: warning: incompatible function pointer types initializing 'int (*)(void *, struct kernel_hwtstamp_config *, struct netlink_ext_ack *)' with an expression of type 'int (struct gbe_intf *, struct kernel_hwtstamp_config *, struct netlink_ext_ack *)' [-Wincompatible-function-pointer-types-strict]
> 3851 | .hwtstamp_set = gbe_hwtstamp_set,
> | ^~~~~~~~~~~~~~~~
>
> While 'void *' and 'struct gbe_intf *' are ABI compatible, hence no
> regular warning from -Wincompatible-function-pointer-types, the mismatch
> will trigger a kCFI violation when gbe_hwtstamp_get() or
> gbe_hwtstamp_set() are called indirectly. The types were updated for the
> CONFIG_TI_CPTS=y implementations but not the CONFIG_TI_CPTS=n ones.
>
> Update the type of the first parameter in the CONFIG_TI_CPTS=n stubs to
> resolve the warning/CFI violation.
>
> Fixes: 3f02b8272557 ("ti: netcp: convert to ndo_hwtstamp callbacks")
> Signed-off-by: Nathan Chancellor <nathan@...nel.org>
> ---
> drivers/net/ethernet/ti/netcp_ethss.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/ti/netcp_ethss.c b/drivers/net/ethernet/ti/netcp_ethss.c
> index 0ae44112812c..4f6cc6cd1f03 100644
> --- a/drivers/net/ethernet/ti/netcp_ethss.c
> +++ b/drivers/net/ethernet/ti/netcp_ethss.c
> @@ -2755,13 +2755,13 @@ static inline void gbe_unregister_cpts(struct gbe_priv *gbe_dev)
> {
> }
>
> -static inline int gbe_hwtstamp_get(struct gbe_intf *gbe_intf,
> +static inline int gbe_hwtstamp_get(void *intf_priv,
> struct kernel_hwtstamp_config *cfg)
> {
> return -EOPNOTSUPP;
> }
>
> -static inline int gbe_hwtstamp_set(struct gbe_intf *gbe_intf,
> +static inline int gbe_hwtstamp_set(void *intf_priv,
> struct kernel_hwtstamp_config *cfg,
> struct netlink_ext_ack *extack)
> {
>
Fair, netcp_module expects 'void *' type of the first parameter.
Reviewed-by: Vadim Fedorenko <vadim.fedorenko@...ux.dev>
Powered by blists - more mailing lists