void rtnl_unregister_all(int protocol)
{
	struct rtnl_link *handlers;

	BUG_ON(protocol < 0 || protocol > RTNL_FAMILY_MAX);

	rtnl_lock();
	handlers = rtnl_dereference(rtnl_msg_handlers[protocol]);
	RCU_INIT_POINTER(rtnl_msg_handlers[protocol], NULL);
	rtnl_unlock();

	synchronize_net();

	while (refcount_read(&rtnl_msg_handlers_ref[protocol]) > 1)
		schedule();
	kfree(handlers);
}
void rtnl_unregister_all(int protocol)
{
	struct rtnl_link *handlers;

	BUG_ON(protocol < 0 || protocol > RTNL_FAMILY_MAX);

	rtnl_lock();
	handlers = rtnl_dereference(rtnl_msg_handlers[protocol]);
	RCU_INIT_POINTER(rtnl_msg_handlers[protocol], NULL);
	rtnl_unlock();

	synchronize_net();

	while (refcount_read(&rtnl_msg_handlers_ref[protocol]) > 1)
		schedule();
	kfree(handlers);
}