Johannes Berg
b8273570f8
genetlink: fix netns vs. netlink table locking (2)
...
Similar to commit d136f1bd36 ,
there's a bug when unregistering a generic netlink family,
which is caught by the might_sleep() added in that commit:
BUG: sleeping function called from invalid context at net/netlink/af_netlink.c:183
in_atomic(): 1, irqs_disabled(): 0, pid: 1510, name: rmmod
2 locks held by rmmod/1510:
#0 : (genl_mutex){+.+.+.}, at: [<ffffffff8138283b>] genl_unregister_family+0x2b/0x130
#1 : (rcu_read_lock){.+.+..}, at: [<ffffffff8138270c>] __genl_unregister_mc_group+0x1c/0x120
Pid: 1510, comm: rmmod Not tainted 2.6.31-wl #444
Call Trace:
[<ffffffff81044ff9>] __might_sleep+0x119/0x150
[<ffffffff81380501>] netlink_table_grab+0x21/0x100
[<ffffffff813813a3>] netlink_clear_multicast_users+0x23/0x60
[<ffffffff81382761>] __genl_unregister_mc_group+0x71/0x120
[<ffffffff81382866>] genl_unregister_family+0x56/0x130
[<ffffffffa0007d85>] nl80211_exit+0x15/0x20 [cfg80211]
[<ffffffffa000005a>] cfg80211_exit+0x1a/0x40 [cfg80211]
Fix in the same way by grabbing the netlink table lock
before doing rcu_read_lock().
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-09-24 15:44:05 -07:00
..
9p
virtio: add virtio IDs file
2009-09-23 22:26:32 +09:30
802
net: remove COMPAT_NET_DEV_OPS
2009-05-25 01:53:53 -07:00
8021q
vlan: adds drops accounting
2009-09-03 20:02:17 -07:00
appletalk
Have atalk_route_packet() return NET_RX_SUCCESS not NET_XMIT_SUCCESS
2009-09-14 17:02:47 -07:00
atm
atm/br2684: netif_stop_queue() when atm device busy and netif_wake_queue() when we can send packets again.
2009-09-02 23:46:10 -07:00
ax25
ax25: Fix SIOCAX25GETINFO ioctl
2009-09-22 14:00:14 -07:00
bluetooth
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
2009-09-22 07:51:28 -07:00
bridge
sysctl: remove "struct file *" argument of ->proc_handler
2009-09-24 07:21:04 -07:00
can
can: fix NOHZ local_softirq_pending 08 warning
2009-09-15 01:31:34 -07:00
core
pktgen: better scheduler friendliness
2009-09-24 15:38:50 -07:00
dcb
dcbnl: Add implementations of dcbnl setapp/getapp commands
2009-09-01 01:24:36 -07:00
dccp
mm: replace various uses of num_physpages by totalram_pages
2009-09-22 07:17:38 -07:00
decnet
sysctl: remove "struct file *" argument of ->proc_handler
2009-09-24 07:21:04 -07:00
dsa
netdev: convert pseudo-devices to netdev_tx_t
2009-09-01 01:13:07 -07:00
econet
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
2009-08-12 17:44:53 -07:00
ethernet
net: remove COMPAT_NET_DEV_OPS
2009-05-25 01:53:53 -07:00
ieee802154
ieee802154: add locking for seq numbers
2009-09-15 18:25:16 +04:00
ipv4
tunnel: eliminate recursion field
2009-09-24 15:39:22 -07:00
ipv6
tunnel: eliminate recursion field
2009-09-24 15:39:22 -07:00
ipx
headers: smp_lock.h redux
2009-07-12 12:22:34 -07:00
irda
sysctl: remove "struct file *" argument of ->proc_handler
2009-09-24 07:21:04 -07:00
iucv
af_iucv: fix race when queueing skbs on the backlog queue
2009-09-16 20:57:39 -07:00
key
net: file_operations should be const
2009-09-02 01:03:53 -07:00
lapb
net: remove NET_RX_BAD and NET_RX_CN* defines
2009-07-05 19:15:35 -07:00
llc
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
2009-09-02 00:32:56 -07:00
mac80211
mac80211: fix DTIM setting
2009-09-23 11:35:53 -04:00
netfilter
sysctl: remove "struct file *" argument of ->proc_handler
2009-09-24 07:21:04 -07:00
netlabel
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
2009-07-30 19:22:43 -07:00
netlink
genetlink: fix netns vs. netlink table locking (2)
2009-09-24 15:44:05 -07:00
netrom
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
2009-09-02 00:32:56 -07:00
packet
af_packet: style cleanups
2009-07-23 18:01:10 -07:00
phonet
Phonet: error on broadcast sending (unimplemented)
2009-09-24 15:38:57 -07:00
rds
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
2009-09-17 20:53:52 -07:00
rfkill
rfkill: add the GPS radio type
2009-08-04 16:44:23 -04:00
rose
net: constify remaining proto_ops
2009-09-14 17:03:09 -07:00
rxrpc
trivial: fix typo "to to" in multiple files
2009-09-21 15:14:55 +02:00
sched
trivial: fix typo "to to" in multiple files
2009-09-21 15:14:55 +02:00
sctp
mm: replace various uses of num_physpages by totalram_pages
2009-09-22 07:17:38 -07:00
sunrpc
net: fix htmldocs sunrpc, clnt.c
2009-09-24 15:39:14 -07:00
tipc
tipc: fix test of bearer_priority range in tipc_register_media()
2009-08-29 00:19:42 -07:00
unix
net: unix: fix sending fds in multiple buffers
2009-09-11 11:31:45 -07:00
wanrouter
headers: smp_lock.h redux
2009-07-12 12:22:34 -07:00
wimax
wimax: fix warning caused by not checking retval of rfkill_set_hw_state()
2009-06-11 11:12:48 -07:00
wireless
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
2009-09-24 15:13:11 -07:00
x25
headers: smp_lock.h redux
2009-07-12 12:22:34 -07:00
xfrm
net: file_operations should be const
2009-09-02 01:03:53 -07:00
compat.c
net/compat/wext: send different messages to compat tasks
2009-07-15 08:53:39 -07:00
Kconfig
net/compat/wext: send different messages to compat tasks
2009-07-15 08:53:39 -07:00
Makefile
net: remove redundant sched/ in net/Makefile
2009-07-12 20:11:14 -07:00
nonet.c
socket.c
Move magic numbers into magic.h
2009-09-23 07:39:28 -07:00
sysctl_net.c
net: sysctl_net - use net_eq to compare nets
2009-03-16 16:23:30 +01:00
TUNABLE