lkml.org 
[lkml]   [2014]   [Jun]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.13 026/212] bridge: Handle IFLA_ADDRESS correctly when creating bridge device
    Date
    3.13.11.4 -stable review patch.  If anyone has any objections, please let me know.

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

    From: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>

    [ Upstream commit 30313a3d5794472c3548d7288e306a5492030370 ]

    When bridge device is created with IFLA_ADDRESS, we are not calling
    br_stp_change_bridge_id(), which leads to incorrect local fdb
    management and bridge id calculation, and prevents us from receiving
    frames on the bridge device.

    Reported-by: Tom Gundersen <teg@jklm.no>
    Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    net/bridge/br_netlink.c | 15 +++++++++++++++
    1 file changed, 15 insertions(+)

    diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c
    index f75d92e..b47b344e 100644
    --- a/net/bridge/br_netlink.c
    +++ b/net/bridge/br_netlink.c
    @@ -446,6 +446,20 @@ static int br_validate(struct nlattr *tb[], struct nlattr *data[])
    return 0;
    }

    +static int br_dev_newlink(struct net *src_net, struct net_device *dev,
    + struct nlattr *tb[], struct nlattr *data[])
    +{
    + struct net_bridge *br = netdev_priv(dev);
    +
    + if (tb[IFLA_ADDRESS]) {
    + spin_lock_bh(&br->lock);
    + br_stp_change_bridge_id(br, nla_data(tb[IFLA_ADDRESS]));
    + spin_unlock_bh(&br->lock);
    + }
    +
    + return register_netdevice(dev);
    +}
    +
    static size_t br_get_link_af_size(const struct net_device *dev)
    {
    struct net_port_vlans *pv;
    @@ -474,6 +488,7 @@ struct rtnl_link_ops br_link_ops __read_mostly = {
    .priv_size = sizeof(struct net_bridge),
    .setup = br_dev_setup,
    .validate = br_validate,
    + .newlink = br_dev_newlink,
    .dellink = br_dev_delete,
    };

    --
    1.9.1


    \
     
     \ /
      Last update: 2014-06-18 01:41    [W:4.063 / U:1.780 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site