lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<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

Powered by Openwall GNU/*/Linux Powered by OpenVZ