Subject: Re: linux-next: build failure after merge of the net-next tree

From: Matthieu Baerts <[email-masked]>
Date: Tue, 24 Jan 2023 10:57:58 +0100

Hi Stephen,

On 24/01/2023 00:02, Stephen Rothwell wrote:
> Hi all,
> 
> After merging the net-next tree, today's linux-next build (powerpc
> ppc64_defconfig) failed like this:
> 
> In file included from net/ethtool/netlink.c:6:
> net/ethtool/netlink.h:177:20: error: redefinition of 'ethnl_update_bool'
>   177 | static inline void ethnl_update_bool(bool *dst, const struct nlattr *attr,
>       |                    ^~~~~~~~~~~~~~~~~
> net/ethtool/netlink.h:125:20: note: previous definition of 'ethnl_update_bool' with type 'void(bool *, const struct nlattr *, bool *)' {aka 'void(_Bool *, const struct nlattr *, _Bool *)'}
>   125 | static inline void ethnl_update_bool(bool *dst, const struct nlattr *attr,
>       |                    ^~~~~~~~~~~~~~~~~

Thank you for the patch, we had the same issue in MPTCP tree when
merging net and net-next.

> Caused by commit
> 
>   dc0b98a1758f ("ethtool: Add and use ethnl_update_bool.")
> 
> merging badly with commit
> 
>   7c494a7749a7 ("net: ethtool: netlink: introduce ethnl_update_bool()")
> 
> from the net tree.
> 
> I applied the following merge fix up.
> 
> From: Stephen Rothwell <[email-masked]>
> Date: Tue, 24 Jan 2023 09:58:16 +1100
> Subject: [PATCH] fix up for "ethtool: Add and use ethnl_update_bool."
> 
> interacting with "net: ethtool: netlink: introduce ethnl_update_bool()"
> 
> Signed-off-by: Stephen Rothwell <[email-masked]>
> ---
>  net/ethtool/netlink.h | 26 --------------------------
>  1 file changed, 26 deletions(-)
> 
> diff --git a/net/ethtool/netlink.h b/net/ethtool/netlink.h
> index 4992fab0d06b..b01f7cd542c4 100644
> --- a/net/ethtool/netlink.h
> +++ b/net/ethtool/netlink.h
> @@ -111,32 +111,6 @@ static inline void ethnl_update_u8(u8 *dst, const struct nlattr *attr,
>  	*mod = true;
>  }
>  
> -/**
> - * ethnl_update_bool() - update bool from NLA_U8 attribute
> - * @dst:  value to update
> - * @attr: netlink attribute with new value or null
> - * @mod:  pointer to bool for modification tracking
> - *
> - * Use the u8 value from NLA_U8 netlink attribute @attr to set bool variable
> - * pointed to by @dst to false (if zero) or 1 (if not); do nothing if @attr is
> - * null. Bool pointed to by @mod is set to true if this function changed the
> - * logical value of *dst, otherwise it is left as is.
> - */
> -static inline void ethnl_update_bool(bool *dst, const struct nlattr *attr,
> -				     bool *mod)
> -{
> -	u8 val;
> -
> -	if (!attr)
> -		return;
> -	val = !!nla_get_u8(attr);
> -	if (*dst == val)
> -		return;
> -
> -	*dst = val;
> -	*mod = true;
> -}

Small detail: should we not remove the other one -- introduced by commit
dc0b98a1758f ("ethtool: Add and use ethnl_update_bool.") -- instead? The
other one has some typos in the description and is using "!!*dst" while
it is not needed if I'm not mistaken.

In MPTCP tree for the moment, I removed the other one but I will follow
up on which one I need to discard :)
Just in case, I attached the patch I used. I can send it properly if needed.

Cheers,
Matt
-- 
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net

From dca3dbf90a4fdf4191122adde227fc31807264eb Mon Sep 17 00:00:00 2001
From: Stephen Rothwell <[email-masked]>
Date: Tue, 24 Jan 2023 10:02:49 +1100
Subject: [PATCH net-next] net: ethtool: fix up for "ethtool: Add and use
 ethnl_update_bool."

After merging the net-next tree, today's linux-next build (powerpc
ppc64_defconfig) failed like this:

  In file included from net/ethtool/netlink.c:6:
  net/ethtool/netlink.h:177:20: error: redefinition of 'ethnl_update_bool'
    177 | static inline void ethnl_update_bool(bool *dst, const struct nlattr *attr,
        |                    ^~~~~~~~~~~~~~~~~
  net/ethtool/netlink.h:125:20: note: previous definition of 'ethnl_update_bool' with type 'void(bool *, const struct nlattr *, bool *)' {aka 'void(_Bool *, const struct nlattr *, _Bool *)'}
    125 | static inline void ethnl_update_bool(bool *dst, const struct nlattr *attr,
        |                    ^~~~~~~~~~~~~~~~~

Caused by:

  commit dc0b98a1758f ("ethtool: Add and use ethnl_update_bool.")

merging badly with:

  commit 7c494a7749a7 ("net: ethtool: netlink: introduce ethnl_update_bool()")

from the net tree.

The version from net-next -- commit 7c494a7749a7 ("net: ethtool:
netlink: introduce ethnl_update_bool()") -- has been taken, keeping the
one from net.

Fixes: dc0b98a1758f ("ethtool: Add and use ethnl_update_bool.")
Co-developed-by: Matthieu Baerts <[email-masked]>
Signed-off-by: Matthieu Baerts <[email-masked]>
Signed-off-by: Stephen Rothwell <[email-masked]>
---
 net/ethtool/netlink.h | 26 --------------------------
 1 file changed, 26 deletions(-)

diff --git a/net/ethtool/netlink.h b/net/ethtool/netlink.h
index 4992fab0d06b..29aef39476eb 100644
--- a/net/ethtool/netlink.h
+++ b/net/ethtool/netlink.h
@@ -163,32 +163,6 @@ static inline void ethnl_update_bool32(u32 *dst, const struct nlattr *attr,
 	*mod = true;
 }
 
-/**
- * ethnl_update_bool() - updateb bool used as bool from NLA_U8 attribute
- * @dst:  value to update
- * @attr: netlink attribute with new value or null
- * @mod:  pointer to bool for modification tracking
- *
- * Use the bool value from NLA_U8 netlink attribute @attr to set bool variable
- * pointed to by @dst to 0 (if zero) or 1 (if not); do nothing if @attr is
- * null. Bool pointed to by @mod is set to true if this function changed the
- * logical value of *dst, otherwise it is left as is.
- */
-static inline void ethnl_update_bool(bool *dst, const struct nlattr *attr,
-				     bool *mod)
-{
-	u8 val;
-
-	if (!attr)
-		return;
-	val = !!nla_get_u8(attr);
-	if (!!*dst == val)
-		return;
-
-	*dst = val;
-	*mod = true;
-}
-
 /**
  * ethnl_update_binary() - update binary data from NLA_BINARY attribute
  * @dst:  value to update
-- 
2.38.1