lkml.org 
[lkml]   [2019]   [Nov]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 2/6] rtnetlink: skip namespace change if already effect
    Date
    RTM_SETLINK uses IFA_TARGET_NETNSID both as a selector for the device to
    act upon and as a selection of the namespace to move a device in the
    current namespace to. As such, one ends up in the code path for setting
    the namespace every time one calls setlink on a device outside the
    current namespace. This has the unfortunate side effect of setting the
    'modified' flag on the device for every pass, resulting in Netlink
    notifications even when nothing was changed.

    This patch just makes the namespace switch dependent upon the namespace
    the device currently resides in.

    Signed-off-by: Jonas Bonn <jonas@norrbonn.se>
    Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    ---
    net/core/rtnetlink.c | 14 +++++++++-----
    1 file changed, 9 insertions(+), 5 deletions(-)

    diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
    index aa3924c9813c..a21e7d47135b 100644
    --- a/net/core/rtnetlink.c
    +++ b/net/core/rtnetlink.c
    @@ -2394,11 +2394,15 @@ static int do_setlink(const struct sk_buff *skb,
    goto errout;
    }

    - err = dev_change_net_namespace(dev, net, ifname);
    - put_net(net);
    - if (err)
    - goto errout;
    - status |= DO_SETLINK_MODIFIED;
    + if (!net_eq(dev_net(dev), net)) {
    + err = dev_change_net_namespace(dev, net, ifname);
    + put_net(net);
    + if (err)
    + goto errout;
    + status |= DO_SETLINK_MODIFIED;
    + } else {
    + put_net(net);
    + }
    }

    if (tb[IFLA_MAP]) {
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-11-07 14:29    [W:7.794 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site