netdev_wait_allrefs_any(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 netdev_wait_allrefs_any(9) 🌸

okay so this page is straight out of the Kernel API Manual, bestie, and it’s basically the β€œwait until everyone finally leaves the group chat” of network-device teardown. No cap. πŸ’…

✨ NAME ✨

netdev_wait_allrefs_any β€” wait until all references are gone.

πŸ¦‹ SYNOPSIS πŸ¦‹

struct net_device * netdev_wait_allrefs_any (struct list_head *list );

πŸŽ€ ARGUMENTS πŸŽ€

  • list β€” the list of net_devices to wait on.

πŸ’… DESCRIPTION πŸ’…

So this one gets called when you’re unregistering network devices. Like, cleanup era has officially arrived. 🧹✨

Any protocol or device that holds a reference should register for netdevice notification, and cleanup and put back the reference if they receive an UNREGISTER event. That’s the assignment, okay? Register, clean up, put the reference back. Don’t leave your reference lying around like a half-finished iced coffee. πŸ“

We can get stuck here if buggy protocols don’t correctly call dev_put. Get stuck as in this wait can just sit there, so if your protocol is being messy, that’s the vibe check it failed. 😭

πŸ‘‘ SEE ALSO πŸ‘‘

Kernel file ./net/core/dev.c β€” and the whole function-friends crew, exactly as listed:

dev_add_pack(9), __dev_remove_pack(9), dev_remove_pack(9), dev_get_iflink(9),
dev_fill_metadata_dst(9), netdev_napi_by_id_lock(9), __dev_get_by_name(9),
dev_get_by_name_rcu(9), netdev_get_by_name(9), __dev_get_by_index(9),
dev_get_by_index_rcu(9), netdev_get_by_index(9), dev_get_by_napi_id(9),
netdev_get_by_index_lock(9), netdev_get_name(9), dev_getbyhwaddr_rcu(9),
dev_getbyhwaddr(9), netdev_get_by_flags_rcu(9), dev_valid_name(9),
__dev_alloc_name(9), dev_alloc_name(9), dev_get_alias(9),
netdev_features_change(9), __netdev_notify_peers(9), netdev_notify_peers(9),
dev_disable_gro_hw(9), register_netdevice_notifier(9),
unregister_netdevice_notifier(9), register_netdevice_notifier_net(9),
unregister_netdevice_notifier_net(9), call_netdevice_notifiers_info(9),
call_netdevice_notifiers_info_robust(9), call_netdevice_notifiers(9),
call_netdevice_notifiers_mtu(9), dev_forward_skb(9), dev_nit_active_rcu(9),
netif_setup_tc(9), netif_set_real_num_rx_queues(9),
netif_set_real_num_queues(9), netif_set_tso_max_size(9),
netif_set_tso_max_segs(9), netif_inherit_tso_max(9),
netif_get_num_default_rss_queues(9), netif_device_detach(9),
netif_device_attach(9), dev_loopback_xmit(9), __dev_queue_xmit(9),
rps_flow_is_active(9), rps_may_expire_flow(9), __netif_rx(9), netif_rx(9),
netdev_is_rx_handler_busy(9), netdev_rx_handler_register(9),
netdev_rx_handler_unregister(9), netif_receive_skb_core(9),
netif_receive_skb(9), netif_receive_skb_list(9), __napi_schedule(9),
napi_schedule_prep(9), __napi_schedule_irqoff(9), netif_threaded_enable(9),
netif_queue_set_napi(9), napi_disable(9), napi_enable(9),
netdev_has_upper_dev(9), netdev_has_upper_dev_all_rcu(9),
netdev_has_any_upper_dev(9), netdev_master_upper_dev_get(9),
netdev_has_any_lower_dev(9), netdev_upper_get_next_dev_rcu(9),
netdev_lower_get_next_private(9), netdev_lower_get_next_private_rcu(9),
netdev_lower_get_next(9), netdev_lower_get_first_private_rcu(9),
netdev_master_upper_dev_get_rcu(9), netdev_upper_dev_link(9),
netdev_master_upper_dev_link(9), netdev_upper_dev_unlink(9),
netdev_bonding_info_change(9), netdev_get_xmit_slave(9),
netdev_sk_get_lowest_dev(9), netdev_lower_state_changed(9),
netif_get_flags(9), netif_set_mtu_ext(9), netif_pre_changeaddr_notify(9),
dev_get_phys_port_id(9), dev_get_phys_port_name(9),
netif_get_port_parent_id(9), netdev_port_same_parent_id(9),
netdev_change_proto_down_reason_locked(9), dev_change_xdp_fd(9),
dev_index_reserve(9), netdev_update_features(9), netdev_change_features(9),
netif_stacked_transfer_operstate(9), register_netdevice(9), register_netdev(9),
dev_get_stats(9), dev_fetch_sw_netstats(9), dev_get_tstats64(9),
netdev_sw_irq_coalesce_default_on(9), alloc_netdev_mqs(9), free_netdev(9),
alloc_netdev_dummy(9), synchronize_net(9), unregister_netdevice_queue(9),
unregister_netdevice_many(9), unregister_netdev(9),
netdev_increment_features(9), netdev_compute_master_upper_features(9),
netdev_drivername(9)

okay bye bestie πŸ’– β€” source/version: ./net/core, date: October 2026, page: netdev_wait_allrefs_any(9). mwah 🫢

πŸ“¦ where this page comes from