Hi Vasily,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on net/master]
[also build test WARNING on v4.14-rc8 next-20171106]
[cannot apply to net-next/master]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Vasily-Averin/exit_net-checks-for-objects-initialized-in-net_init-hook/20171107-094512
config: i386-randconfig-x001-201745 (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   In file included from arch/x86/include/asm/bug.h:82:0,
                    from include/linux/bug.h:5,
                    from include/linux/thread_info.h:12,
                    from arch/x86/include/asm/preempt.h:7,
                    from include/linux/preempt.h:81,
                    from include/linux/spinlock.h:51,
                    from include/linux/seqlock.h:36,
                    from include/linux/time.h:6,
                    from include/linux/stat.h:19,
                    from include/linux/module.h:10,
                    from drivers/net/geneve.c:14:
   drivers/net/geneve.c: In function 'geneve_exit_net':
>> drivers/net/geneve.c:1671:7: warning: too many arguments for format 
>> [-Wformat-extra-args]
          "&s: sock_list is not empty\n", __func__);
          ^
   include/asm-generic/bug.h:94:43: note: in definition of macro '__WARN_printf'
    #define __WARN_printf(arg...) do { printk(arg); __WARN(); } while (0)
                                              ^~~
>> drivers/net/geneve.c:1670:2: note: in expansion of macro 'WARN'
     WARN(!list_empty(&gn->sock_list),
     ^~~~

vim +1671 drivers/net/geneve.c

  1643  
  1644  static void __net_exit geneve_exit_net(struct net *net)
  1645  {
  1646          struct geneve_net *gn = net_generic(net, geneve_net_id);
  1647          struct geneve_dev *geneve, *next;
  1648          struct net_device *dev, *aux;
  1649          LIST_HEAD(list);
  1650  
  1651          rtnl_lock();
  1652  
  1653          /* gather any geneve devices that were moved into this ns */
  1654          for_each_netdev_safe(net, dev, aux)
  1655                  if (dev->rtnl_link_ops == &geneve_link_ops)
  1656                          unregister_netdevice_queue(dev, &list);
  1657  
  1658          /* now gather any other geneve devices that were created in 
this ns */
  1659          list_for_each_entry_safe(geneve, next, &gn->geneve_list, next) {
  1660                  /* If geneve->dev is in the same netns, it was already 
added
  1661                   * to the list by the previous loop.
  1662                   */
  1663                  if (!net_eq(dev_net(geneve->dev), net))
  1664                          unregister_netdevice_queue(geneve->dev, &list);
  1665          }
  1666  
  1667          /* unregister the devices gathered above */
  1668          unregister_netdevice_many(&list);
  1669          rtnl_unlock();
> 1670          WARN(!list_empty(&gn->sock_list),
> 1671               "&s: sock_list is not empty\n", __func__);
  1672  }
  1673  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to