lkml.org 
[lkml]   [2015]   [Feb]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.12 087/122] bridge: dont send notification when skb->len == 0 in rtnl_bridge_notify
    Date
    From: Roopa Prabhu <roopa@cumulusnetworks.com>

    3.12-stable review patch. If anyone has any objections, please let me know.

    ===============

    [ Upstream commit 59ccaaaa49b5b096cdc1f16706a9f931416b2332 ]

    Reported in: https://bugzilla.kernel.org/show_bug.cgi?id=92081

    This patch avoids calling rtnl_notify if the device ndo_bridge_getlink
    handler does not return any bytes in the skb.

    Alternately, the skb->len check can be moved inside rtnl_notify.

    For the bridge vlan case described in 92081, there is also a fix needed
    in bridge driver to generate a proper notification. Will fix that in
    subsequent patch.

    v2: rebase patch on net tree

    Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    ---
    net/core/rtnetlink.c | 6 +++++-
    1 file changed, 5 insertions(+), 1 deletion(-)

    diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
    index f3224755b328..5874dfbb8d90 100644
    --- a/net/core/rtnetlink.c
    +++ b/net/core/rtnetlink.c
    @@ -2542,12 +2542,16 @@ static int rtnl_bridge_notify(struct net_device *dev, u16 flags)
    goto errout;
    }

    + if (!skb->len)
    + goto errout;
    +
    rtnl_notify(skb, net, 0, RTNLGRP_LINK, NULL, GFP_ATOMIC);
    return 0;
    errout:
    WARN_ON(err == -EMSGSIZE);
    kfree_skb(skb);
    - rtnl_set_sk_err(net, RTNLGRP_LINK, err);
    + if (err)
    + rtnl_set_sk_err(net, RTNLGRP_LINK, err);
    return err;
    }

    --
    2.2.2


    \
     
     \ /
      Last update: 2015-02-17 13:01    [W:3.856 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site