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] [thread-next>] [day] [month] [year] [list]
Message-ID: <ZJNRZZCkGdvp+k34@corigine.com>
Date:   Wed, 21 Jun 2023 21:37:09 +0200
From:   Simon Horman <simon.horman@...igine.com>
To:     Randy Dunlap <rdunlap@...radead.org>
Cc:     linux-kernel@...r.kernel.org,
        Alexandra Winter <wintera@...ux.ibm.com>,
        Wenjia Zhang <wenjia@...ux.ibm.com>,
        linux-s390@...r.kernel.org, netdev@...r.kernel.org,
        Heiko Carstens <hca@...ux.ibm.com>,
        Vasily Gorbik <gor@...ux.ibm.com>,
        Alexander Gordeev <agordeev@...ux.ibm.com>,
        Christian Borntraeger <borntraeger@...ux.ibm.com>,
        Sven Schnelle <svens@...ux.ibm.com>
Subject: Re: [PATCH] s390/net: lcs: use IS_ENABLED() for kconfig detection

On Wed, Jun 21, 2023 at 11:08:05AM -0700, Randy Dunlap wrote:
> Hi Simon,
> 
> 
> On 6/21/23 08:53, Simon Horman wrote:
> > On Tue, Jun 20, 2023 at 07:35:17PM -0700, Randy Dunlap wrote:
> >> Hi,
> >>
> >> On 6/15/23 15:21, Randy Dunlap wrote:
> >>> When CONFIG_ETHERNET=m or CONFIG_FDDI=m, lcs.s has build errors or
> >>> warnings:
> >>>
> >>> ../drivers/s390/net/lcs.c:40:2: error: #error Cannot compile lcs.c without some net devices switched on.
> >>>    40 | #error Cannot compile lcs.c without some net devices switched on.
> >>> ../drivers/s390/net/lcs.c: In function 'lcs_startlan_auto':
> >>> ../drivers/s390/net/lcs.c:1601:13: warning: unused variable 'rc' [-Wunused-variable]
> >>>  1601 |         int rc;
> >>>
> >>> Solve this by using IS_ENABLED(CONFIG_symbol) instead of ifdef
> >>> CONFIG_symbol. The latter only works for builtin (=y) values
> >>> while IS_ENABLED() works for builtin or modular values.
> >>>
> >>> Signed-off-by: Randy Dunlap <rdunlap@...radead.org>
> >>> Cc: Alexandra Winter <wintera@...ux.ibm.com>
> >>> Cc: Wenjia Zhang <wenjia@...ux.ibm.com>
> >>> Cc: linux-s390@...r.kernel.org
> >>> Cc: netdev@...r.kernel.org
> >>> Cc: Heiko Carstens <hca@...ux.ibm.com>
> >>> Cc: Vasily Gorbik <gor@...ux.ibm.com>
> >>> Cc: Alexander Gordeev <agordeev@...ux.ibm.com>
> >>> Cc: Christian Borntraeger <borntraeger@...ux.ibm.com>
> >>> Cc: Sven Schnelle <svens@...ux.ibm.com>
> >>> ---
> >>>  drivers/s390/net/lcs.c |   10 +++++-----
> >>>  1 file changed, 5 insertions(+), 5 deletions(-)
> >>>
> >>> diff -- a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c
> >>> --- a/drivers/s390/net/lcs.c
> >>> +++ b/drivers/s390/net/lcs.c
> >>> @@ -36,7 +36,7 @@
> >>>  #include "lcs.h"
> >>>  
> >>>  
> >>> -#if !defined(CONFIG_ETHERNET) && !defined(CONFIG_FDDI)
> >>> +#if !IS_ENABLED(CONFIG_ETHERNET) && !IS_ENABLED(CONFIG_FDDI)
> >>>  #error Cannot compile lcs.c without some net devices switched on.
> >>>  #endif
> >>>  
> >>> @@ -1601,14 +1601,14 @@ lcs_startlan_auto(struct lcs_card *card)
> >>>  	int rc;
> >>>  
> >>>  	LCS_DBF_TEXT(2, trace, "strtauto");
> >>> -#ifdef CONFIG_ETHERNET
> >>> +#if IS_ENABLED(CONFIG_ETHERNET)
> >>>  	card->lan_type = LCS_FRAME_TYPE_ENET;
> >>>  	rc = lcs_send_startlan(card, LCS_INITIATOR_TCPIP);
> >>>  	if (rc == 0)
> >>>  		return 0;
> >>>  
> >>>  #endif
> >>> -#ifdef CONFIG_FDDI
> >>> +#if IS_ENABLED(CONFIG_FDDI)
> >>>  	card->lan_type = LCS_FRAME_TYPE_FDDI;
> >>>  	rc = lcs_send_startlan(card, LCS_INITIATOR_TCPIP);
> >>>  	if (rc == 0)
> >>> @@ -2139,13 +2139,13 @@ lcs_new_device(struct ccwgroup_device *c
> >>>  		goto netdev_out;
> >>>  	}
> >>>  	switch (card->lan_type) {
> >>> -#ifdef CONFIG_ETHERNET
> >>> +#if IS_ENABLED(CONFIG_ETHERNET)
> >>>  	case LCS_FRAME_TYPE_ENET:
> >>>  		card->lan_type_trans = eth_type_trans;
> >>>  		dev = alloc_etherdev(0);
> >>>  		break;
> >>>  #endif
> >>> -#ifdef CONFIG_FDDI
> >>> +#if IS_ENABLED(CONFIG_FDDI)
> >>>  	case LCS_FRAME_TYPE_FDDI:
> >>>  		card->lan_type_trans = fddi_type_trans;
> >>>  		dev = alloc_fddidev(0);
> >>
> >>
> >> kernel test robot reports build errors from this patch when
> >> ETHERNET=y, FDDI=m, LCS=y:
> >>
> >>   https://lore.kernel.org/all/202306202129.pl0AqK8G-lkp@intel.com/
> >>
> >> Since the code before my patch expected (supported) FDDI=y only
> >> (by checking for CONFIG_FDDI only and not checking for CONFIG_FDDI_MODULE),
> >> the best solution that I can see is to enforce that expectation in
> >> drivers/s390/net/Kconfig:
> >>
> >> diff -- a/drivers/s390/net/Kconfig b/drivers/s390/net/Kconfig
> >> --- a/drivers/s390/net/Kconfig
> >> +++ b/drivers/s390/net/Kconfig
> >> @@ -5,7 +5,7 @@ menu "S/390 network device drivers"
> >>  config LCS
> >>  	def_tristate m
> >>  	prompt "Lan Channel Station Interface"
> >> -	depends on CCW && NETDEVICES && (ETHERNET || FDDI)
> >> +	depends on CCW && NETDEVICES && (ETHERNET || FDDI = y)
> > 
> > Hi Randy,
> > 
> > Unfortunately I don't think this helps.
> > In the config given at the link above, ETHERNET is y.
> > And the error regarding fddi_type_trans and alloc_fddidev being undefined
> > seems to occur regardless of your change.
> 
> Hmph, somehow I missed that. :(
> 
> > I did have better luck with this.
> > 
> > diff --git a/drivers/s390/net/Kconfig b/drivers/s390/net/Kconfig
> > index 9c67b97faba2..303220251495 100644
> > --- a/drivers/s390/net/Kconfig
> > +++ b/drivers/s390/net/Kconfig
> > @@ -6,6 +6,7 @@ config LCS
> >         def_tristate m
> >         prompt "Lan Channel Station Interface"
> >         depends on CCW && NETDEVICES && (ETHERNET || FDDI)
> > +       depends on FDDI=y || FDDI=n
> >         help
> >           Select this option if you want to use LCS networking on IBM System z.
> >           This device driver supports FDDI (IEEE 802.7) and Ethernet.
> > 
> > I am assuming that LCS=m and FDDI=m can't work at runtime
> > because there is no guarantee that FDDI is loaded before LCS.
> > But I could well be wrong here.
> 
> There's probably some way to make that work, but I don't know.
> 
> I think that your patch is acceptable.
> I would prefer to also add to the help text that if FDDI is used,
> it must be builtin (=y).

Thanks Randy,

Feel free to take the snippet above and work it into a proper patch.
Else I can take a shot at it.

> >>  	help
> >>  	  Select this option if you want to use LCS networking on IBM System z.
> >>  	  This device driver supports FDDI (IEEE 802.7) and Ethernet.
> >>
> >> What do people think of that change?
> >> Any other ideas/suggestions?
> >>
> >> thanks.
> >> -- 
> >> ~Randy
> >>
> 
> Thanks for your help.
> -- 
> ~Randy

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ