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: <YYvKyruLcemj6J+i@lunn.ch>
Date:   Wed, 10 Nov 2021 14:36:10 +0100
From:   Andrew Lunn <andrew@...n.ch>
To:     "shenjian (K)" <shenjian15@...wei.com>
Cc:     davem@...emloft.net, kuba@...nel.org, ecree.xilinx@...il.com,
        hkallweit1@...il.com, alexandr.lobakin@...el.com, saeed@...nel.org,
        netdev@...r.kernel.org, linuxarm@...neuler.org
Subject: Re: [RFCv4 PATCH net-next] net: extend netdev_features_t

On Wed, Nov 10, 2021 at 09:17:12AM +0800, shenjian (K) wrote:
> 
> 
> 在 2021/11/10 6:32, Andrew Lunn 写道:
> > > -	if ((netdev->features & NETIF_F_HW_TC) > (features & NETIF_F_HW_TC) &&
> > > +	if ((netdev_active_features_test_bit(netdev, NETIF_F_HW_TC_BIT) >
> > > +	    netdev_features_test_bit(NETIF_F_NTUPLE_BIT, features)) &&
> > Using > is interesting.
> will use
> 
> if (netdev_active_features_test_bit(netdev, NETIF_F_HW_TC_BIT) &&
>     !netdev_features_test_bit(netdev, NETIF_F_HW_TC_BIT))
> 
> instead.

I don't think it needs changing. It is just unusual. I had to think
about it, a while, and i was not initial sure it would still work.

> > But where did NETIF_F_NTUPLE_BIT come from?
> Thanks for catching this!
 
> > > -	netdev->features |= NETIF_F_HW_VLAN_CTAG_FILTER |
> > > -		NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_CTAG_RX |
> > > -		NETIF_F_RXCSUM | NETIF_F_SG | NETIF_F_GSO |
> > > -		NETIF_F_GRO | NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_GSO_GRE |
> > > -		NETIF_F_GSO_GRE_CSUM | NETIF_F_GSO_UDP_TUNNEL |
> > > -		NETIF_F_SCTP_CRC | NETIF_F_FRAGLIST;
> > > +	netdev_features_zero(&features);
> > > +	netdev_features_set_array(hns3_default_features_array,
> > > +				  ARRAY_SIZE(hns3_default_features_array),
> > > +				  &features);
> > The original code is netdev->features |= so it is appending these
> > bits. Yet the first thing the new code does is zero features?
> > 
> >        Andrew
> > .
> The features is a local variable, the change for netdev->active_features is
> later, by calling
> 
> netdev_active_features_direct_or(netdev, features);

O.K. This and the NETIF_F_NTPLE_BIT points towards another issue. The
new API looks O.K. to me and we need to encourage more people to
review it. This patch allows us to see where you are going with the
change, and i think it is O.K.

However, you are about to modify a large number of files to swap to
this new API. Accidentally changing NETIF_F_HW_TC to
NETIF_F_NTUPLE_BIT is unlikely to be noticed in review given the size
of the change you are about to make. Changing the structure of the
code to later call netdev_active_features_direct_or() is going to be
messy. In order to have confidence you are not introducing a lot of
new bugs we are going to want to see the semantic patches which make
all the needed changes. So while waiting for further reviews, i
suggest you are start on the semantic patches. It could also be that
you want to modify the proposed API in minor ways to make it easier to
write the semantic patches.

      Andrew

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ