tree: https://github.com/cilium/linux.git pr/bpf-tc-links5 head: 7c3ffc4a0548d3177f68bc87af7c9775e5bcdb86 commit: d23123fce93d005f0c30e114da971359b0883cee [1/10] bpf: Add initial fd-based API to attach tc BPF programs config: x86_64-rhel-8.3-kvm compiler: gcc-11 (Debian 11.3.0-5) 11.3.0 reproduce (this is a W=1 build): # https://github.com/cilium/linux/commit/d23123fce93d005f0c30e114da971359b0883cee git remote add cilium https://github.com/cilium/linux.git git fetch --no-tags cilium pr/bpf-tc-links5 git checkout d23123fce93d005f0c30e114da971359b0883cee # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All errors (new ones prefixed by >>): ld: net/core/dev.o: in function `unregister_netdevice_many': >> net/core/dev.c:10901: undefined reference to `dev_xtc_uninstall' vim +10901 net/core/dev.c 10844 10845 /** 10846 * unregister_netdevice_many - unregister many devices 10847 * @head: list of devices 10848 * 10849 * Note: As most callers use a stack allocated list_head, 10850 * we force a list_del() to make sure stack wont be corrupted later. 10851 */ 10852 void unregister_netdevice_many(struct list_head *head) 10853 { 10854 struct net_device *dev, *tmp; 10855 LIST_HEAD(close_head); 10856 10857 BUG_ON(dev_boot_phase); 10858 ASSERT_RTNL(); 10859 10860 if (list_empty(head)) 10861 return; 10862 10863 list_for_each_entry_safe(dev, tmp, head, unreg_list) { 10864 /* Some devices call without registering 10865 * for initialization unwind. Remove those 10866 * devices and proceed with the remaining. 10867 */ 10868 if (dev->reg_state == NETREG_UNINITIALIZED) { 10869 pr_debug("unregister_netdevice: device %s/%p never was registered\n", 10870 dev->name, dev); 10871 10872 WARN_ON(1); 10873 list_del(&dev->unreg_list); 10874 continue; 10875 } 10876 dev->dismantle = true; 10877 BUG_ON(dev->reg_state != NETREG_REGISTERED); 10878 } 10879 10880 /* If device is running, close it first. */ 10881 list_for_each_entry(dev, head, unreg_list) 10882 list_add_tail(&dev->close_list, &close_head); 10883 dev_close_many(&close_head, true); 10884 10885 list_for_each_entry(dev, head, unreg_list) { 10886 /* And unlink it from device chain. */ 10887 write_lock(&dev_base_lock); 10888 unlist_netdevice(dev, false); 10889 dev->reg_state = NETREG_UNREGISTERING; 10890 write_unlock(&dev_base_lock); 10891 } 10892 flush_all_backlogs(); 10893 10894 synchronize_net(); 10895 10896 list_for_each_entry(dev, head, unreg_list) { 10897 struct sk_buff *skb = NULL; 10898 10899 /* Shutdown queueing discipline. */ 10900 dev_shutdown(dev); 10901 dev_xtc_uninstall(dev); 10902 dev_xdp_uninstall(dev); 10903 10904 netdev_offload_xstats_disable_all(dev); 10905 10906 /* Notify protocols, that we are about to destroy 10907 * this device. They should clean all the things. 10908 */ 10909 call_netdevice_notifiers(NETDEV_UNREGISTER, dev); 10910 10911 if (!dev->rtnl_link_ops || 10912 dev->rtnl_link_state == RTNL_LINK_INITIALIZED) 10913 skb = rtmsg_ifinfo_build_skb(RTM_DELLINK, dev, ~0U, 0, 10914 GFP_KERNEL, NULL, 0); 10915 10916 /* 10917 * Flush the unicast and multicast chains 10918 */ 10919 dev_uc_flush(dev); 10920 dev_mc_flush(dev); 10921 10922 netdev_name_node_alt_flush(dev); 10923 netdev_name_node_free(dev->name_node); 10924 10925 if (dev->netdev_ops->ndo_uninit) 10926 dev->netdev_ops->ndo_uninit(dev); 10927 10928 if (skb) 10929 rtmsg_ifinfo_send(skb, dev, GFP_KERNEL); 10930 10931 /* Notifier chain MUST detach us all upper devices. */ 10932 WARN_ON(netdev_has_any_upper_dev(dev)); 10933 WARN_ON(netdev_has_any_lower_dev(dev)); 10934 10935 /* Remove entries from kobject tree */ 10936 netdev_unregister_kobject(dev); 10937 #ifdef CONFIG_XPS 10938 /* Remove XPS queueing entries */ 10939 netif_reset_xps_queues_gt(dev, 0); 10940 #endif 10941 } 10942 10943 synchronize_net(); 10944 10945 list_for_each_entry(dev, head, unreg_list) { 10946 netdev_put(dev, &dev->dev_registered_tracker); 10947 net_set_todo(dev); 10948 } 10949 10950 list_del(head); 10951 } 10952 EXPORT_SYMBOL(unregister_netdevice_many); 10953 -- 0-DAY CI Kernel Test Service https://01.org/lkp