lkml.org 
[lkml]   [2018]   [Feb]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.2 095/140] 8021q: fix a memory leak for VLAN 0 device
    3.2.100-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Cong Wang <xiyou.wangcong@gmail.com>

    commit 78bbb15f2239bc8e663aa20bbe1987c91a0b75f6 upstream.

    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 <dvyukov@google.com>
    Fixes: ad1afb003939 ("vlan_dev: VLAN 0 should be treated as "no vlan tag" (802.1p packet)")
    Cc: Vlad Yasevich <vyasevich@gmail.com>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2: The vlan driver didn't leak memory itself, but might
    cause underlying drivers to leak resources for VID 0. Keep the check for
    hardware acceleration.]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    net/8021q/vlan.c | 7 +------
    1 file changed, 1 insertion(+), 6 deletions(-)

    --- a/net/8021q/vlan.c
    +++ b/net/8021q/vlan.c
    @@ -132,11 +132,7 @@ void unregister_vlan_dev(struct net_devi
    call_rcu(&grp->rcu, vlan_rcu_free);
    }

    - /* 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 && (real_dev->features & NETIF_F_HW_VLAN_FILTER))
    + if (real_dev->features & NETIF_F_HW_VLAN_FILTER)
    ops->ndo_vlan_rx_kill_vid(real_dev, vlan_id);

    /* Get rid of the vlan's reference to real_dev */
    \
     
     \ /
      Last update: 2018-02-28 18:34    [W:4.097 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site