From patchwork Tue May 30 21:33:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Flavio Leitner X-Patchwork-Id: 768820 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3wcnLV4nnYz9s74 for ; Wed, 31 May 2017 07:49:06 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751134AbdE3VtE (ORCPT ); Tue, 30 May 2017 17:49:04 -0400 Received: from sender-of-o51.zoho.com ([135.84.80.216]:21136 "EHLO sender-of-o51.zoho.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751083AbdE3VtD (ORCPT ); Tue, 30 May 2017 17:49:03 -0400 X-Greylist: delayed 903 seconds by postgrey-1.27 at vger.kernel.org; Tue, 30 May 2017 17:49:03 EDT Received: from localhost (168.181.51.88 [168.181.51.88]) by mx.zohomail.com with SMTPS id 1496180035857817.4843397552493; Tue, 30 May 2017 14:33:55 -0700 (PDT) From: Flavio Leitner To: netdev@vger.kernel.org Cc: Flavio Leitner Subject: [PATCH net-next] netlink: include netnsid only when netns differs. Date: Tue, 30 May 2017 18:33:25 -0300 Message-Id: <20170530213325.21652-1-fbl@sysclose.org> X-Mailer: git-send-email 2.9.4 X-ZohoMailClient: External X-ZohoMail: Z_48747228 SPT_1 Z_48632977 SPT_0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Don't include netns id for notifications broadcasts when the socket and the skb are in the same netns because it will be an error which can't be distinguished from a peer netns failing to allocate an id. Signed-off-by: Flavio Leitner --- net/netlink/af_netlink.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index ee841f0..b9f1392 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c @@ -1414,8 +1414,10 @@ static void do_one_broadcast(struct sock *sk, p->skb2 = NULL; goto out; } - NETLINK_CB(p->skb2).nsid = peernet2id(sock_net(sk), p->net); - NETLINK_CB(p->skb2).nsid_is_set = true; + if (!net_eq(sock_net(sk), p->net)) { + NETLINK_CB(p->skb2).nsid = peernet2id(sock_net(sk), p->net); + NETLINK_CB(p->skb2).nsid_is_set = true; + } val = netlink_broadcast_deliver(sk, p->skb2); if (val < 0) { netlink_overrun(sk);