Taehee Yoo
1962f86b42
virt_wifi: fix refcnt leak in module exit routine
virt_wifi_newlink() calls netdev_upper_dev_link() and it internally
holds reference count of lower interface.
Current code does not release a reference count of the lower interface
when the lower interface is being deleted.
So, reference count leaks occur.
Test commands:
ip link add dummy0 type dummy
ip link add vw1 link dummy0 type virt_wifi
ip link del dummy0
Splat looks like:
[ 133.787526][ T788] WARNING: CPU: 1 PID: 788 at net/core/dev.c:8274 rollback_registered_many+0x835/0xc80
[ 133.788355][ T788] Modules linked in: virt_wifi cfg80211 dummy team af_packet sch_fq_codel ip_tables x_tables unix
[ 133.789377][ T788] CPU: 1 PID: 788 Comm: ip Not tainted 5.4.0-rc3+ #96
[ 133.790069][ T788] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
[ 133.791167][ T788] RIP: 0010:rollback_registered_many+0x835/0xc80
[ 133.791906][ T788] Code: 00 4d 85 ff 0f 84 b5 fd ff ff ba c0 0c 00 00 48 89 de 4c 89 ff e8 9b 58 04 00 48 89 df e8 30
[ 133.794317][ T788] RSP: 0018:ffff88805ba3f338 EFLAGS: 00010202
[ 133.795080][ T788] RAX: ffff88805e57e801 RBX: ffff88805ba34000 RCX: ffffffffa9294723
[ 133.796045][ T788] RDX: 1ffff1100b746816 RSI: 0000000000000008 RDI: ffffffffabcc4240
[ 133.797006][ T788] RBP: ffff88805ba3f4c0 R08: fffffbfff5798849 R09: fffffbfff5798849
[ 133.797993][ T788] R10: 0000000000000001 R11: fffffbfff5798848 R12: dffffc0000000000
[ 133.802514][ T788] R13: ffff88805ba3f440 R14: ffff88805ba3f400 R15: ffff88805ed622c0
[ 133.803237][ T788] FS: 00007f2e9608c0c0(0000) GS:ffff88806cc00000(0000) knlGS:0000000000000000
[ 133.804002][ T788] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 133.804664][ T788] CR2: 00007f2e95610603 CR3: 000000005f68c004 CR4: 00000000000606e0
[ 133.805363][ T788] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 133.806073][ T788] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 133.806787][ T788] Call Trace:
[ 133.807069][ T788] ? generic_xdp_install+0x310/0x310
[ 133.807612][ T788] ? lock_acquire+0x164/0x3b0
[ 133.808077][ T788] ? is_bpf_text_address+0x5/0xf0
[ 133.808640][ T788] ? deref_stack_reg+0x9c/0xd0
[ 133.809138][ T788] ? __nla_validate_parse+0x98/0x1ab0
[ 133.809944][ T788] unregister_netdevice_many.part.122+0x13/0x1b0
[ 133.810599][ T788] rtnl_delete_link+0xbc/0x100
[ 133.811073][ T788] ? rtnl_af_register+0xc0/0xc0
[ 133.811672][ T788] rtnl_dellink+0x30e/0x8a0
[ 133.812205][ T788] ? is_bpf_text_address+0x5/0xf0
[ ... ]
[ 144.110530][ T788] unregister_netdevice: waiting for dummy0 to become free. Usage count = 1
This patch adds notifier routine to delete upper interface before deleting
lower interface.
Fixes: c7cdba31ed ("mac80211-next: rtnetlink wifi simulation device")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-10-24 14:53:49 -07:00
..
2019-10-18 08:38:26 -07:00
2019-09-22 09:39:09 -07:00
2019-10-10 14:39:23 +02:00
2019-10-15 14:10:19 -06:00
2019-09-25 13:54:45 +02:00
2019-09-17 16:22:26 -07:00
2019-10-19 06:32:31 -04:00
2019-09-13 16:44:49 +03:00
2019-10-19 06:32:32 -04:00
2019-09-15 14:17:27 +02:00
2019-09-30 10:04:28 -07:00
2019-10-02 13:49:43 -07:00
2019-10-03 09:15:19 -07:00
2019-10-02 16:16:07 -07:00
2019-10-10 11:11:17 +02:00
2019-09-17 19:15:14 -07:00
2019-09-24 16:10:23 -07:00
2019-09-22 09:30:30 -07:00
2019-10-10 17:05:20 +02:00
2019-09-22 09:39:09 -07:00
2019-09-19 14:14:28 -07:00
2019-10-15 09:20:07 -07:00
2019-09-18 11:14:31 -07:00
2019-10-15 01:19:05 +02:00
2019-10-18 06:40:28 +10:00
2019-10-01 14:49:41 -04:00
2019-09-22 12:02:21 -07:00
2019-10-01 14:49:45 -04:00
2019-10-02 06:42:48 -07:00
2019-09-18 11:14:31 -07:00
2019-09-28 20:44:12 +02:00
2019-10-10 11:18:37 +02:00
2019-10-04 15:54:22 -03:00
2019-10-17 11:18:44 -07:00
2019-10-18 16:52:37 +02:00
2019-09-22 09:30:30 -07:00
2019-09-24 16:37:18 +02:00
2019-09-12 20:45:52 +02:00
2019-09-05 13:17:01 -06:00
2019-09-17 00:54:29 -05:00
2019-10-18 22:29:36 -04:00
2019-10-04 14:38:46 +02:00
2019-08-30 15:57:27 +02:00
2019-10-09 11:08:03 +02:00
2019-09-29 10:24:23 -07:00
2019-10-04 18:22:14 +02:00
2019-10-09 11:05:50 +02:00
2019-10-07 09:56:36 +02:00
2019-10-24 14:53:49 -07:00
2019-10-08 16:52:26 -07:00
2019-09-23 17:20:40 -04:00
2019-09-29 10:33:41 -07:00
2019-10-18 23:09:41 +09:00
2019-09-18 11:14:31 -07:00
2019-09-28 17:47:33 -07:00
2019-10-14 21:44:26 +02:00
2019-09-18 11:14:31 -07:00
2019-10-15 23:51:36 +02:00
2019-09-28 08:14:15 -07:00
2019-08-30 12:46:12 +01:00
2019-09-23 19:16:01 -07:00
2019-09-19 14:19:33 -07:00
2019-10-14 15:31:50 +03:00
2019-09-22 12:04:59 -07:00
2019-09-17 19:15:14 -07:00
2019-10-07 14:55:46 -04:00
2019-09-27 12:19:47 -07:00
2019-09-17 18:40:42 -07:00
2019-09-22 10:55:08 -07:00
2019-09-30 10:04:28 -07:00
2019-09-17 15:33:31 -07:00
2019-09-22 11:05:43 -07:00
2019-10-19 17:09:11 -04:00
2019-10-18 08:08:53 -07:00
2019-09-16 15:52:38 -07:00
2019-09-22 10:52:23 -07:00
2019-09-17 18:40:42 -07:00
2019-09-13 17:23:18 +03:00
2019-10-12 15:44:46 -07:00
2019-09-24 15:54:08 -07:00
2019-09-25 17:51:41 -07:00
2019-09-29 10:24:23 -07:00
2019-10-10 13:12:28 +02:00
2019-09-18 11:14:31 -07:00
2019-10-10 14:24:06 +02:00
2019-09-25 17:51:41 -07:00
2019-10-13 09:38:27 -04:00
2019-10-05 15:29:49 +09:00
2019-10-10 14:50:32 +02:00
2019-09-09 10:43:15 -04:00
2019-10-10 15:35:41 +02:00
2019-09-27 11:17:38 -07:00
2019-10-19 17:09:11 -04:00
2019-09-18 11:05:34 -07:00
2019-09-18 11:05:34 -07:00