mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 08:19:28 +00:00
vrf: fix a kernel warning
This fixes:
tried to remove device ip6gre0 from (null)
------------[ cut here ]------------
kernel BUG at net/core/dev.c:5219!
invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
CPU: 3 PID: 161 Comm: kworker/u8:2 Not tainted 4.3.0-rc2+ #1142
Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
Workqueue: netns cleanup_net
task: ffff8800d784a9c0 ti: ffff8800d74a4000 task.ti: ffff8800d74a4000
RIP: 0010:[<ffffffff817f0797>] [<ffffffff817f0797>] __netdev_adjacent_dev_remove+0x40/0xec
RSP: 0018:ffff8800d74a7a98 EFLAGS: 00010282
RAX: 000000000000002a RBX: 0000000000000000 RCX: 0000000000000000
RDX: ffff88011adcf701 RSI: ffff88011adccbf8 RDI: ffff88011adccbf8
RBP: ffff8800d74a7ab8 R08: 0000000000000001 R09: 0000000000000000
R10: ffffffff81d190ff R11: 00000000ffffffff R12: ffff8800d599e7c0
R13: 0000000000000000 R14: ffff8800d599e890 R15: ffffffff82385e00
FS: 0000000000000000(0000) GS:ffff88011ac00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 00007ffd6f003000 CR3: 000000000220c000 CR4: 00000000000006e0
Stack:
0000000000000000 ffff8800d599e7c0 0000000000000b00 ffff8800d599e8a0
ffff8800d74a7ad8 ffffffff817f0861 0000000000000000 ffff8800d599e7c0
ffff8800d74a7af8 ffffffff817f088f 0000000000000000 ffff8800d599e7c0
Call Trace:
[<ffffffff817f0861>] __netdev_adjacent_dev_unlink+0x1e/0x35
[<ffffffff817f088f>] __netdev_adjacent_dev_unlink_neighbour+0x17/0x41
[<ffffffff817f56e6>] netdev_upper_dev_unlink+0x6c/0x13d
[<ffffffff81674a3d>] vrf_del_slave+0x26/0x7d
[<ffffffff81674ac3>] vrf_device_event+0x2f/0x34
[<ffffffff81098c40>] notifier_call_chain+0x75/0x9c
[<ffffffff81098fa2>] raw_notifier_call_chain+0x14/0x16
[<ffffffff817ee129>] call_netdevice_notifiers_info+0x52/0x59
[<ffffffff817f179d>] call_netdevice_notifiers+0x13/0x15
[<ffffffff817f6f18>] rollback_registered_many+0x14f/0x24f
[<ffffffff817f70f2>] unregister_netdevice_many+0x19/0x64
[<ffffffff819a2455>] ip6gre_exit_net+0x163/0x177
[<ffffffff817eb019>] ops_exit_list+0x44/0x55
[<ffffffff817ebcb7>] cleanup_net+0x193/0x226
[<ffffffff81091e1c>] process_one_work+0x26c/0x4d8
[<ffffffff81091d20>] ? process_one_work+0x170/0x4d8
[<ffffffff81092296>] worker_thread+0x1df/0x2c2
[<ffffffff810920b7>] ? process_scheduled_works+0x2f/0x2f
[<ffffffff810920b7>] ? process_scheduled_works+0x2f/0x2f
[<ffffffff81097a20>] kthread+0xd4/0xdc
[<ffffffff810bc523>] ? trace_hardirqs_on_caller+0x17d/0x199
[<ffffffff8109794c>] ? __kthread_parkme+0x83/0x83
[<ffffffff81a5240f>] ret_from_fork+0x3f/0x70
[<ffffffff8109794c>] ? __kthread_parkme+0x83/0x83
Fixes: 93a7e7e837
("net: Remove the now unused vrf_ptr")
Cc: David Ahern <dsa@cumulusnetworks.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: David Ahern <dsa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9886ce2b9d
commit
0a15afd2ea
1 changed files with 1 additions and 1 deletions
|
@ -672,7 +672,7 @@ static int vrf_device_event(struct notifier_block *unused,
|
|||
if (event == NETDEV_UNREGISTER) {
|
||||
struct net_device *vrf_dev;
|
||||
|
||||
if (netif_is_l3_master(dev))
|
||||
if (!vrf_is_slave(dev) || netif_is_l3_master(dev))
|
||||
goto out;
|
||||
|
||||
vrf_dev = netdev_master_upper_dev_get(dev);
|
||||
|
|
Loading…
Reference in a new issue