|
Jiri Slaby |
77d625 |
From: Cong Wang <xiyou.wangcong@gmail.com>
|
|
Jiri Slaby |
77d625 |
Date: Tue, 9 Jan 2018 13:40:41 -0800
|
|
Jiri Slaby |
77d625 |
Subject: 8021q: fix a memory leak for VLAN 0 device
|
|
Jiri Slaby |
77d625 |
Git-commit: 78bbb15f2239bc8e663aa20bbe1987c91a0b75f6
|
|
Jiri Slaby |
77d625 |
Patch-mainline: v4.15-rc8
|
|
Jiri Slaby |
77d625 |
References: networking-stable-18_01_12
|
|
Jiri Slaby |
77d625 |
|
|
Jiri Slaby |
77d625 |
A vlan device with vid 0 is allow to creat by not able to be fully
|
|
Jiri Slaby |
77d625 |
cleaned up by unregister_vlan_dev() which checks for vlan_id!=0.
|
|
Jiri Slaby |
77d625 |
|
|
Jiri Slaby |
77d625 |
Also, VLAN 0 is probably not a valid number and it is kinda
|
|
Jiri Slaby |
77d625 |
"reserved" for HW accelerating devices, but it is probably too
|
|
Jiri Slaby |
77d625 |
late to reject it from creation even if makes sense. Instead,
|
|
Jiri Slaby |
77d625 |
just remove the check in unregister_vlan_dev().
|
|
Jiri Slaby |
77d625 |
|
|
Jiri Slaby |
77d625 |
Reported-by: Dmitry Vyukov <dvyukov@google.com>
|
|
Jiri Slaby |
77d625 |
Fixes: ad1afb003939 ("vlan_dev: VLAN 0 should be treated as "no vlan tag" (802.1p packet)")
|
|
Jiri Slaby |
77d625 |
Cc: Vlad Yasevich <vyasevich@gmail.com>
|
|
Jiri Slaby |
77d625 |
Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
|
|
Jiri Slaby |
77d625 |
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
|
|
Jiri Slaby |
77d625 |
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
Jiri Slaby |
77d625 |
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
|
|
Jiri Slaby |
77d625 |
---
|
|
Jiri Slaby |
77d625 |
net/8021q/vlan.c | 7 +------
|
|
Jiri Slaby |
77d625 |
1 file changed, 1 insertion(+), 6 deletions(-)
|
|
Jiri Slaby |
77d625 |
|
|
Jiri Slaby |
77d625 |
--- a/net/8021q/vlan.c
|
|
Jiri Slaby |
77d625 |
+++ b/net/8021q/vlan.c
|
|
Jiri Slaby |
77d625 |
@@ -111,12 +111,7 @@ void unregister_vlan_dev(struct net_devi
|
|
Jiri Slaby |
77d625 |
vlan_gvrp_uninit_applicant(real_dev);
|
|
Jiri Slaby |
77d625 |
}
|
|
Jiri Slaby |
77d625 |
|
|
Jiri Slaby |
77d625 |
- /* Take it out of our own structures, but be sure to interlock with
|
|
Jiri Slaby |
77d625 |
- * HW accelerating devices or SW vlan input packet processing if
|
|
Jiri Slaby |
77d625 |
- * VLAN is not 0 (leave it there for 802.1p).
|
|
Jiri Slaby |
77d625 |
- */
|
|
Jiri Slaby |
77d625 |
- if (vlan_id)
|
|
Jiri Slaby |
77d625 |
- vlan_vid_del(real_dev, vlan->vlan_proto, vlan_id);
|
|
Jiri Slaby |
77d625 |
+ vlan_vid_del(real_dev, vlan->vlan_proto, vlan_id);
|
|
Jiri Slaby |
77d625 |
|
|
Jiri Slaby |
77d625 |
/* Get rid of the vlan's reference to real_dev */
|
|
Jiri Slaby |
77d625 |
dev_put(real_dev);
|