From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Hemminger Subject: Re: [PATCH net-next] net: core: Assert the size of netdev_featres_t Date: Mon, 30 Apr 2018 09:42:10 -0700 Message-ID: <20180430094210.5602265a@xeon-e3> References: <20180427201114.28830-1-f.fainelli@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, davem@davemloft.net, edumazet@google.com To: Florian Fainelli Return-path: Received: from mail-pf0-f194.google.com ([209.85.192.194]:46767 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754579AbeD3QmN (ORCPT ); Mon, 30 Apr 2018 12:42:13 -0400 Received: by mail-pf0-f194.google.com with SMTP id p12so7151097pff.13 for ; Mon, 30 Apr 2018 09:42:13 -0700 (PDT) In-Reply-To: <20180427201114.28830-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org List-ID: On Fri, 27 Apr 2018 13:11:14 -0700 Florian Fainelli wrote: > We have about 53 netdev_features_t bits defined and counting, add a > build time check to catch when an u64 type will not be enough and we > will have to convert that to a bitmap. This is done in > register_netdevice() for convenience. > > Signed-off-by: Florian Fainelli > --- > include/linux/netdevice.h | 6 ++++++ > net/core/dev.c | 1 + > 2 files changed, 7 insertions(+) > > diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h > index 366c32891158..4326bc6b27d1 100644 > --- a/include/linux/netdevice.h > +++ b/include/linux/netdevice.h > @@ -4121,6 +4121,12 @@ const char *netdev_drivername(const struct net_device *dev); > > void linkwatch_run_queue(void); > > +static inline void netdev_features_size_check(void) > +{ > + BUILD_BUG_ON(sizeof(netdev_features_t) * BITS_PER_BYTE < > + NETDEV_FEATURE_COUNT); > +} > + > static inline netdev_features_t netdev_intersect_features(netdev_features_t f1, > netdev_features_t f2) > { > diff --git a/net/core/dev.c b/net/core/dev.c > index 0a2d46424069..23e6c1aa78c6 100644 > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -7881,6 +7881,7 @@ int register_netdevice(struct net_device *dev) > int ret; > struct net *net = dev_net(dev); > > + netdev_features_size_check(); > BUG_ON(dev_boot_phase); > ASSERT_RTNL(); > You don't have do this kind of inline function stuff to get the check. Why not just put BUILD_BUG_ON directly in net/core/dev.c Could be anywhere. Rather than adding inline in the header file.