Hello!
netlink_broadcast() does read_lock(&nl_table_lock). But nl_table_lock is
not an irq-safe lock.
Just as reminder, there are _no_ irq safe locks in net/*. A few of
local_irq_disable()s are segregated in interface to device drivers.
Possibly netlink_broadcast() can be made callable from hardirq context, but
it looks to be non trivial.
Trivial or non-trivial, before all this is highly not desired.
net/* is better to remain in the form free of knowledge of hardirqs.
Alexey