diff mbox series

ipv4: use IS_ENABLED instead of ifdef

Message ID 20201115224509.2020651-1-flokli@flokli.de
State Superseded
Headers show
Series ipv4: use IS_ENABLED instead of ifdef | expand

Commit Message

Florian Klink Nov. 15, 2020, 10:45 p.m. UTC
Checking for ifdef CONFIG_x fails if CONFIG_x=m.

Use IS_ENABLED instead, which is true for both built-ins and modules.

Otherwise, a
> ip -4 route add 1.2.3.4/32 via inet6 fe80::2 dev eth1
fails with the message "Error: IPv6 support not enabled in kernel." if
CONFIG_IPV6 is `m`.

In the spirit of b8127113d01e53adba15b41aefd37b90ed83d631.

Cc: Kim Phillips <kim.phillips@arm.com>
Signed-off-by: Florian Klink <flokli@flokli.de>
---
 net/ipv4/fib_frontend.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jakub Kicinski Nov. 18, 2020, 12:01 a.m. UTC | #1
On Sun, 15 Nov 2020 23:45:09 +0100 Florian Klink wrote:
> Checking for ifdef CONFIG_x fails if CONFIG_x=m.
> 
> Use IS_ENABLED instead, which is true for both built-ins and modules.
> 
> Otherwise, a
> > ip -4 route add 1.2.3.4/32 via inet6 fe80::2 dev eth1  
> fails with the message "Error: IPv6 support not enabled in kernel." if
> CONFIG_IPV6 is `m`.
> 
> In the spirit of b8127113d01e53adba15b41aefd37b90ed83d631.
> 
> Cc: Kim Phillips <kim.phillips@arm.com>
> Signed-off-by: Florian Klink <flokli@flokli.de>

LGTM, this is the fixes tag right?

Fixes: d15662682db2 ("ipv4: Allow ipv6 gateway with ipv4 routes")

CCing David to give him a chance to ack.

> diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
> index 86a23e4a6a50..b87140a1fa28 100644
> --- a/net/ipv4/fib_frontend.c
> +++ b/net/ipv4/fib_frontend.c
> @@ -696,7 +696,7 @@ int fib_gw_from_via(struct fib_config *cfg, struct nlattr *nla,
>  		cfg->fc_gw4 = *((__be32 *)via->rtvia_addr);
>  		break;
>  	case AF_INET6:
> -#ifdef CONFIG_IPV6
> +#if IS_ENABLED(CONFIG_IPV6)
>  		if (alen != sizeof(struct in6_addr)) {
>  			NL_SET_ERR_MSG(extack, "Invalid IPv6 address in RTA_VIA");
>  			return -EINVAL;
David Ahern Nov. 18, 2020, 12:55 a.m. UTC | #2
On 11/17/20 5:01 PM, Jakub Kicinski wrote:
> On Sun, 15 Nov 2020 23:45:09 +0100 Florian Klink wrote:
>> Checking for ifdef CONFIG_x fails if CONFIG_x=m.
>>
>> Use IS_ENABLED instead, which is true for both built-ins and modules.
>>
>> Otherwise, a
>>> ip -4 route add 1.2.3.4/32 via inet6 fe80::2 dev eth1  
>> fails with the message "Error: IPv6 support not enabled in kernel." if
>> CONFIG_IPV6 is `m`.
>>
>> In the spirit of b8127113d01e53adba15b41aefd37b90ed83d631.
>>
>> Cc: Kim Phillips <kim.phillips@arm.com>
>> Signed-off-by: Florian Klink <flokli@flokli.de>
> 
> LGTM, this is the fixes tag right?
> 
> Fixes: d15662682db2 ("ipv4: Allow ipv6 gateway with ipv4 routes")

yep.

> 
> CCing David to give him a chance to ack.

Reviewed-by: David Ahern <dsahern@kernel.org>

I looked at this yesterday and got distracted diving into the generated
file to see the difference:

#define CONFIG_IPV6 1

vs

#define CONFIG_IPV6_MODULE 1
Jakub Kicinski Nov. 18, 2020, 1:07 a.m. UTC | #3
On Tue, 17 Nov 2020 17:55:54 -0700 David Ahern wrote:
> On 11/17/20 5:01 PM, Jakub Kicinski wrote:
> > On Sun, 15 Nov 2020 23:45:09 +0100 Florian Klink wrote:  
> >> Checking for ifdef CONFIG_x fails if CONFIG_x=m.
> >>
> >> Use IS_ENABLED instead, which is true for both built-ins and modules.
> >>
> >> Otherwise, a  
> >>> ip -4 route add 1.2.3.4/32 via inet6 fe80::2 dev eth1    
> >> fails with the message "Error: IPv6 support not enabled in kernel." if
> >> CONFIG_IPV6 is `m`.
> >>
> >> In the spirit of b8127113d01e53adba15b41aefd37b90ed83d631.
> >>
> >> Cc: Kim Phillips <kim.phillips@arm.com>
> >> Signed-off-by: Florian Klink <flokli@flokli.de>  
> > 
> > LGTM, this is the fixes tag right?
> > 
> > Fixes: d15662682db2 ("ipv4: Allow ipv6 gateway with ipv4 routes")  
> 
> yep.
> 
> > 
> > CCing David to give him a chance to ack.  
> 
> Reviewed-by: David Ahern <dsahern@kernel.org>

Great, applied, thanks!

> I looked at this yesterday and got distracted diving into the generated
> file to see the difference:
> 
> #define CONFIG_IPV6 1
> 
> vs
> 
> #define CONFIG_IPV6_MODULE 1

Interesting.

drivers/net/ethernet/netronome/nfp/flower/action.c:#ifdef CONFIG_IPV6

Oops.
Randy Dunlap Nov. 18, 2020, 3:09 a.m. UTC | #4
On 11/17/20 5:07 PM, Jakub Kicinski wrote:
> On Tue, 17 Nov 2020 17:55:54 -0700 David Ahern wrote:
>> On 11/17/20 5:01 PM, Jakub Kicinski wrote:
>>> On Sun, 15 Nov 2020 23:45:09 +0100 Florian Klink wrote:  
>>>> Checking for ifdef CONFIG_x fails if CONFIG_x=m.
>>>>
>>>> Use IS_ENABLED instead, which is true for both built-ins and modules.
>>>>
>>>> Otherwise, a  
>>>>> ip -4 route add 1.2.3.4/32 via inet6 fe80::2 dev eth1    
>>>> fails with the message "Error: IPv6 support not enabled in kernel." if
>>>> CONFIG_IPV6 is `m`.
>>>>
>>>> In the spirit of b8127113d01e53adba15b41aefd37b90ed83d631.
>>>>
>>>> Cc: Kim Phillips <kim.phillips@arm.com>
>>>> Signed-off-by: Florian Klink <flokli@flokli.de>  
>>>
>>> LGTM, this is the fixes tag right?
>>>
>>> Fixes: d15662682db2 ("ipv4: Allow ipv6 gateway with ipv4 routes")  
>>
>> yep.
>>
>>>
>>> CCing David to give him a chance to ack.  
>>
>> Reviewed-by: David Ahern <dsahern@kernel.org>
> 
> Great, applied, thanks!
> 
>> I looked at this yesterday and got distracted diving into the generated
>> file to see the difference:
>>
>> #define CONFIG_IPV6 1
>>
>> vs
>>
>> #define CONFIG_IPV6_MODULE 1

Digging up ancient history. ;)

> Interesting.
> 
> drivers/net/ethernet/netronome/nfp/flower/action.c:#ifdef CONFIG_IPV6
> 
> Oops.

Notify the maintainer!
Florian Klink Nov. 18, 2020, 8:51 a.m. UTC | #5
>>> I looked at this yesterday and got distracted diving into the generated
>>> file to see the difference:
>>>
>>> #define CONFIG_IPV6 1
>>>
>>> vs
>>>
>>> #define CONFIG_IPV6_MODULE 1
>
>Digging up ancient history. ;)
>
>> Interesting.
>>
>> drivers/net/ethernet/netronome/nfp/flower/action.c:#ifdef CONFIG_IPV6
>>
>> Oops.
>
>Notify the maintainer!

Yeah, this is super scary stuff - allmodyes-like configs are quite
common in generic distros, and I assume similar mistakes could have
happened in many other places in the kernel as well.

I wonder if the "ifdef CONFIG_…" pattern should be discouraged, and
"IS_ENABLED(CONFIG_…)" used instead, at least for all tristate config
options.

Florian
Jakub Kicinski Nov. 18, 2020, 4:38 p.m. UTC | #6
On Tue, 17 Nov 2020 19:09:16 -0800 Randy Dunlap wrote:
> On 11/17/20 5:07 PM, Jakub Kicinski wrote:
> > On Tue, 17 Nov 2020 17:55:54 -0700 David Ahern wrote:  
> >> On 11/17/20 5:01 PM, Jakub Kicinski wrote:  
> >>> On Sun, 15 Nov 2020 23:45:09 +0100 Florian Klink wrote:    
> >>>> Checking for ifdef CONFIG_x fails if CONFIG_x=m.
> >>>>
> >>>> Use IS_ENABLED instead, which is true for both built-ins and modules.
> >>>>
> >>>> Otherwise, a    
> >>>>> ip -4 route add 1.2.3.4/32 via inet6 fe80::2 dev eth1      
> >>>> fails with the message "Error: IPv6 support not enabled in kernel." if
> >>>> CONFIG_IPV6 is `m`.
> >>>>
> >>>> In the spirit of b8127113d01e53adba15b41aefd37b90ed83d631.
> >>>>
> >>>> Cc: Kim Phillips <kim.phillips@arm.com>
> >>>> Signed-off-by: Florian Klink <flokli@flokli.de>    
> >>>
> >>> LGTM, this is the fixes tag right?
> >>>
> >>> Fixes: d15662682db2 ("ipv4: Allow ipv6 gateway with ipv4 routes")    
> >>
> >> yep.
> >>  
> >>>
> >>> CCing David to give him a chance to ack.    
> >>
> >> Reviewed-by: David Ahern <dsahern@kernel.org>  
> > 
> > Great, applied, thanks!
> >   
> >> I looked at this yesterday and got distracted diving into the generated
> >> file to see the difference:
> >>
> >> #define CONFIG_IPV6 1
> >>
> >> vs
> >>
> >> #define CONFIG_IPV6_MODULE 1  
> 
> Digging up ancient history. ;)
> 
> > Interesting.
> > 
> > drivers/net/ethernet/netronome/nfp/flower/action.c:#ifdef CONFIG_IPV6
> > 
> > Oops.  
> 
> Notify the maintainer!

The joke was that I was the maintainer when it was added ;)

CCing Simon
diff mbox series

Patch

diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
index 86a23e4a6a50..b87140a1fa28 100644
--- a/net/ipv4/fib_frontend.c
+++ b/net/ipv4/fib_frontend.c
@@ -696,7 +696,7 @@  int fib_gw_from_via(struct fib_config *cfg, struct nlattr *nla,
 		cfg->fc_gw4 = *((__be32 *)via->rtvia_addr);
 		break;
 	case AF_INET6:
-#ifdef CONFIG_IPV6
+#if IS_ENABLED(CONFIG_IPV6)
 		if (alen != sizeof(struct in6_addr)) {
 			NL_SET_ERR_MSG(extack, "Invalid IPv6 address in RTA_VIA");
 			return -EINVAL;