From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nikolay Aleksandrov Subject: Re: [Patch net] 8021q: fix a memory leak for VLAN 0 device Date: Wed, 10 Jan 2018 00:30:41 +0200 Message-ID: References: <20180109214041.26842-1-xiyou.wangcong@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: dvyukov@google.com, Vlad Yasevich , Ben Hutchings To: Cong Wang , netdev@vger.kernel.org Return-path: Received: from mail-wm0-f66.google.com ([74.125.82.66]:41323 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751097AbeAIWaq (ORCPT ); Tue, 9 Jan 2018 17:30:46 -0500 Received: by mail-wm0-f66.google.com with SMTP id g75so23385233wme.0 for ; Tue, 09 Jan 2018 14:30:46 -0800 (PST) In-Reply-To: <20180109214041.26842-1-xiyou.wangcong@gmail.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 09/01/18 23:40, Cong Wang wrote: > A vlan device with vid 0 is allow to creat by not able to be fully > cleaned up by unregister_vlan_dev() which checks for vlan_id!=0. > > Also, VLAN 0 is probably not a valid number and it is kinda > "reserved" for HW accelerating devices, but it is probably too > late to reject it from creation even if makes sense. Instead, > just remove the check in unregister_vlan_dev(). > > Reported-by: Dmitry Vyukov > Fixes: ad1afb003939 ("vlan_dev: VLAN 0 should be treated as "no vlan tag" (802.1p packet)") > Cc: Vlad Yasevich > Cc: Ben Hutchings > Signed-off-by: Cong Wang > --- > net/8021q/vlan.c | 7 +------ > 1 file changed, 1 insertion(+), 6 deletions(-) > > diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c > index 8dfdd94e430f..bad01b14a4ad 100644 > --- a/net/8021q/vlan.c > +++ b/net/8021q/vlan.c > @@ -111,12 +111,7 @@ void unregister_vlan_dev(struct net_device *dev, struct list_head *head) > vlan_gvrp_uninit_applicant(real_dev); > } > > - /* Take it out of our own structures, but be sure to interlock with > - * HW accelerating devices or SW vlan input packet processing if > - * VLAN is not 0 (leave it there for 802.1p). > - */ > - if (vlan_id) > - vlan_vid_del(real_dev, vlan->vlan_proto, vlan_id); > + vlan_vid_del(real_dev, vlan->vlan_proto, vlan_id); > > /* Get rid of the vlan's reference to real_dev */ > dev_put(real_dev); > Just for reference - this is identical to the first part of: https://patchwork.ozlabs.org/patch/252891/ I knew this looked familiar. :-)