]> git.baikalelectronics.ru Git - kernel.git/commit
net: core: add generic lockdep keys
authorTaehee Yoo <ap420073@gmail.com>
Mon, 21 Oct 2019 18:47:51 +0000 (18:47 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 24 Oct 2019 21:53:48 +0000 (14:53 -0700)
commit6e290b1b3976f13ab47be199689863892bf41cda
tree03c4af9608cb03c9be7dd230953957b36f94d9e5
parent2be9732763fed4ebe4937fe0ed59d4a5bd97a363
net: core: add generic lockdep keys

Some interface types could be nested.
(VLAN, BONDING, TEAM, MACSEC, MACVLAN, IPVLAN, VIRT_WIFI, VXLAN, etc..)
These interface types should set lockdep class because, without lockdep
class key, lockdep always warn about unexisting circular locking.

In the current code, these interfaces have their own lockdep class keys and
these manage itself. So that there are so many duplicate code around the
/driver/net and /net/.
This patch adds new generic lockdep keys and some helper functions for it.

This patch does below changes.
a) Add lockdep class keys in struct net_device
   - qdisc_running, xmit, addr_list, qdisc_busylock
   - these keys are used as dynamic lockdep key.
b) When net_device is being allocated, lockdep keys are registered.
   - alloc_netdev_mqs()
c) When net_device is being free'd llockdep keys are unregistered.
   - free_netdev()
d) Add generic lockdep key helper function
   - netdev_register_lockdep_key()
   - netdev_unregister_lockdep_key()
   - netdev_update_lockdep_key()
e) Remove unnecessary generic lockdep macro and functions
f) Remove unnecessary lockdep code of each interfaces.

After this patch, each interface modules don't need to maintain
their lockdep keys.

Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
25 files changed:
drivers/net/bonding/bond_main.c
drivers/net/ethernet/netronome/nfp/nfp_net_repr.c
drivers/net/hamradio/bpqether.c
drivers/net/hyperv/netvsc_drv.c
drivers/net/ipvlan/ipvlan_main.c
drivers/net/macsec.c
drivers/net/macvlan.c
drivers/net/ppp/ppp_generic.c
drivers/net/team/team.c
drivers/net/vrf.c
drivers/net/wireless/intersil/hostap/hostap_hw.c
include/linux/netdevice.h
net/8021q/vlan_dev.c
net/batman-adv/soft-interface.c
net/bluetooth/6lowpan.c
net/bridge/br_device.c
net/core/dev.c
net/core/rtnetlink.c
net/dsa/master.c
net/dsa/slave.c
net/ieee802154/6lowpan/core.c
net/l2tp/l2tp_eth.c
net/netrom/af_netrom.c
net/rose/af_rose.c
net/sched/sch_generic.c