From patchwork Fri Mar 13 06:50:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 1254265 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=mDGI8yCd; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48dxCg1rf0z9sPF for ; Fri, 13 Mar 2020 17:50:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726387AbgCMGuW (ORCPT ); Fri, 13 Mar 2020 02:50:22 -0400 Received: from mail-pl1-f193.google.com ([209.85.214.193]:38899 "EHLO mail-pl1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726001AbgCMGuW (ORCPT ); Fri, 13 Mar 2020 02:50:22 -0400 Received: by mail-pl1-f193.google.com with SMTP id w3so3786443plz.5 for ; Thu, 12 Mar 2020 23:50:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=zLUGy132+qqP1K8XXGlE7j3Dv5Du/3UR88Hv9XEVy0I=; b=mDGI8yCdF0GB3RixP/pRUtlGkVodQVbwPHJzQU4rPKM/blIUx61fXIRZjLgQTzGTzo kXoeAFnLsVOS+BCuuS0Bl9SI7aq4dz2p4q/8aJnHY/XmcpDntIyStJFYCenwPvRlCYCF odJc3jWdPFREqoRI0fRqm5zukCrEgtpE12zZkeOg1UAOHdmSkfk4rVecG2JyAgwmQEJS vEgDrtTXmW5H8tBB36UuQX/iJ6XR0tTcDr+mpWH8dsMp7wqs3YkSSR7C+lSuROqlofJL 2FLwi9IF105ajsZm4tG8l9+S2ZNCyee3qF6zlP9LnOJWoljCIHqSYHrySNOr/H/rWFj7 63Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=zLUGy132+qqP1K8XXGlE7j3Dv5Du/3UR88Hv9XEVy0I=; b=bETesnv8kSLzREa+ERXht8y+dFePJV8+FUaBJQN/Y9xWlNtRbDdMw55Cb2I/EdlUvF 5T0gLKZSJtgk3EM6JgZ5a170mVhMpkTkmJBi5gWe0FfVMUEM+s37Yt/qbsJ7qqe4VKWB y/B8MwWeUG7AJTYhfREpd7ofdtiSSwps2GG5Sb9lsnxf/puNwcfCB7jG90qV1QZrovF5 fAP23f19mgLLgIvK4HJDT9OKX9+RuRdw6AeOvjp0Ym3hd5Mb+yOEWsRfgNZ4ObRIYe92 00pJcaiEqHV7k0OsyQ+UF6ePJIbbLpo+jbfJ6eSz9L0TMc680PcKJOOCuc/8QoZxZx3K L7Pw== X-Gm-Message-State: ANhLgQ0ylpRuI7km8j+umUUCr0kXW0i9WBWgi3wtdMQycbEo18kuc1ny uIEFKR75fjEi1EzamRpqUX8= X-Google-Smtp-Source: ADFU+vu3TzYHseR5NIKeBucIVhxCkuxyfW63AMrK3+iclCNaUJxfUnKgydBkYZQEzhccW2hgjvUuWA== X-Received: by 2002:a17:902:9a08:: with SMTP id v8mr11947706plp.192.1584082220461; Thu, 12 Mar 2020 23:50:20 -0700 (PDT) Received: from localhost.localdomain ([180.70.143.152]) by smtp.gmail.com with ESMTPSA id b133sm55791859pga.43.2020.03.12.23.50.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Mar 2020 23:50:19 -0700 (PDT) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, netdev@vger.kernel.org Cc: ap420073@gmail.com Subject: [PATCH net v2 1/3] hsr: use rcu_read_lock() in hsr_get_node_{list/status}() Date: Fri, 13 Mar 2020 06:50:14 +0000 Message-Id: <20200313065014.32168-1-ap420073@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org hsr_get_node_{list/status}() are not under rtnl_lock() because they are callback functions of generic netlink. But they use __dev_get_by_index() without rtnl_lock(). So, it would use unsafe data. In order to fix it, rcu_read_lock() and dev_get_by_index_rcu() are used instead of __dev_get_by_index(). Fixes: f421436a591d ("net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0)") Signed-off-by: Taehee Yoo --- v1->v2: - This patch is not changed net/hsr/hsr_framereg.c | 9 ++------- net/hsr/hsr_netlink.c | 39 +++++++++++++++++++++------------------ 2 files changed, 23 insertions(+), 25 deletions(-) diff --git a/net/hsr/hsr_framereg.c b/net/hsr/hsr_framereg.c index 3ba7f61be107..a64bb64935a6 100644 --- a/net/hsr/hsr_framereg.c +++ b/net/hsr/hsr_framereg.c @@ -482,12 +482,9 @@ int hsr_get_node_data(struct hsr_priv *hsr, struct hsr_port *port; unsigned long tdiff; - rcu_read_lock(); node = find_node_by_addr_A(&hsr->node_db, addr); - if (!node) { - rcu_read_unlock(); - return -ENOENT; /* No such entry */ - } + if (!node) + return -ENOENT; ether_addr_copy(addr_b, node->macaddress_B); @@ -522,7 +519,5 @@ int hsr_get_node_data(struct hsr_priv *hsr, *addr_b_ifindex = -1; } - rcu_read_unlock(); - return 0; } diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c index 8dc0547f01d0..d6760df2ad1f 100644 --- a/net/hsr/hsr_netlink.c +++ b/net/hsr/hsr_netlink.c @@ -251,15 +251,16 @@ static int hsr_get_node_status(struct sk_buff *skb_in, struct genl_info *info) if (!na) goto invalid; - hsr_dev = __dev_get_by_index(genl_info_net(info), - nla_get_u32(info->attrs[HSR_A_IFINDEX])); + rcu_read_lock(); + hsr_dev = dev_get_by_index_rcu(genl_info_net(info), + nla_get_u32(info->attrs[HSR_A_IFINDEX])); if (!hsr_dev) - goto invalid; + goto rcu_unlock; if (!is_hsr_master(hsr_dev)) - goto invalid; + goto rcu_unlock; /* Send reply */ - skb_out = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); + skb_out = genlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC); if (!skb_out) { res = -ENOMEM; goto fail; @@ -313,12 +314,10 @@ static int hsr_get_node_status(struct sk_buff *skb_in, struct genl_info *info) res = nla_put_u16(skb_out, HSR_A_IF1_SEQ, hsr_node_if1_seq); if (res < 0) goto nla_put_failure; - rcu_read_lock(); port = hsr_port_get_hsr(hsr, HSR_PT_SLAVE_A); if (port) res = nla_put_u32(skb_out, HSR_A_IF1_IFINDEX, port->dev->ifindex); - rcu_read_unlock(); if (res < 0) goto nla_put_failure; @@ -328,20 +327,22 @@ static int hsr_get_node_status(struct sk_buff *skb_in, struct genl_info *info) res = nla_put_u16(skb_out, HSR_A_IF2_SEQ, hsr_node_if2_seq); if (res < 0) goto nla_put_failure; - rcu_read_lock(); port = hsr_port_get_hsr(hsr, HSR_PT_SLAVE_B); if (port) res = nla_put_u32(skb_out, HSR_A_IF2_IFINDEX, port->dev->ifindex); - rcu_read_unlock(); if (res < 0) goto nla_put_failure; + rcu_read_unlock(); + genlmsg_end(skb_out, msg_head); genlmsg_unicast(genl_info_net(info), skb_out, info->snd_portid); return 0; +rcu_unlock: + rcu_read_unlock(); invalid: netlink_ack(skb_in, nlmsg_hdr(skb_in), -EINVAL, NULL); return 0; @@ -351,6 +352,7 @@ static int hsr_get_node_status(struct sk_buff *skb_in, struct genl_info *info) /* Fall through */ fail: + rcu_read_unlock(); return res; } @@ -377,15 +379,16 @@ static int hsr_get_node_list(struct sk_buff *skb_in, struct genl_info *info) if (!na) goto invalid; - hsr_dev = __dev_get_by_index(genl_info_net(info), - nla_get_u32(info->attrs[HSR_A_IFINDEX])); + rcu_read_lock(); + hsr_dev = dev_get_by_index_rcu(genl_info_net(info), + nla_get_u32(info->attrs[HSR_A_IFINDEX])); if (!hsr_dev) - goto invalid; + goto rcu_unlock; if (!is_hsr_master(hsr_dev)) - goto invalid; + goto rcu_unlock; /* Send reply */ - skb_out = genlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); + skb_out = genlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC); if (!skb_out) { res = -ENOMEM; goto fail; @@ -405,14 +408,11 @@ static int hsr_get_node_list(struct sk_buff *skb_in, struct genl_info *info) hsr = netdev_priv(hsr_dev); - rcu_read_lock(); pos = hsr_get_next_node(hsr, NULL, addr); while (pos) { res = nla_put(skb_out, HSR_A_NODE_ADDR, ETH_ALEN, addr); - if (res < 0) { - rcu_read_unlock(); + if (res < 0) goto nla_put_failure; - } pos = hsr_get_next_node(hsr, pos, addr); } rcu_read_unlock(); @@ -422,6 +422,8 @@ static int hsr_get_node_list(struct sk_buff *skb_in, struct genl_info *info) return 0; +rcu_unlock: + rcu_read_unlock(); invalid: netlink_ack(skb_in, nlmsg_hdr(skb_in), -EINVAL, NULL); return 0; @@ -431,6 +433,7 @@ static int hsr_get_node_list(struct sk_buff *skb_in, struct genl_info *info) /* Fall through */ fail: + rcu_read_unlock(); return res; } From patchwork Fri Mar 13 06:50:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 1254266 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=dSvNhZTW; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48dxCr11V9z9sRN for ; Fri, 13 Mar 2020 17:50:32 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726426AbgCMGub (ORCPT ); Fri, 13 Mar 2020 02:50:31 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:45086 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726310AbgCMGub (ORCPT ); Fri, 13 Mar 2020 02:50:31 -0400 Received: by mail-pg1-f194.google.com with SMTP id m15so4405923pgv.12 for ; Thu, 12 Mar 2020 23:50:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=MChUGtY/VgoOSm3/jJPQL1b+4SXDeYcdDyRAjaA7370=; b=dSvNhZTWMgAvsEQ5y579jVwe/nWZ4ozwGi3Y7NJ5UHfEdVtzmoIyd48n7lhnyp9GUd CevN+jnj+bZdMD2S8jmkrfD3ImpQcmgVD9l4UcfcaALbSKCLqnqlvVZQmsgM593fDcdF iDkb9zAW/yzlIg9unw1SW6Vaxb7YbtXScEsBA4d8rUxFTxoN6tTFN51RKiOK5fKMvrVU r2gouBk+vxtZIi2rGGaA6UKRCYg3qQzGaC3bMRRVZO1Bzi4rNvf9xHMnejLLv+ttyuoW df3J+cWYDWYu3FNGnjMdnsl8PkTADZiCWI7fBgz7Zp1oINmYMTpKWJRoAUHT+myVLUCl 2M8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=MChUGtY/VgoOSm3/jJPQL1b+4SXDeYcdDyRAjaA7370=; b=BawqgyBG+Oqyl8TuRImCWITuLJXjZ7PQxkXj56SbYe4HfDtkS1IEY1SCtnGn/8ObOI +SeeUsJQ2GCbTzrqD/hyB4rkQLhQC5TEL8FZEZ3vttCH0hNi3S/gmnNYi27yGkmDGmtj kT+Rpuo/dmbiJL6hfFG6BPBLiJ1uR0bjA7XGcQc9tPlBts75Tz1wcpEBa6AD4rGSRviW XfuSazoJPqeBNdsrLZOvI8KDN9TuwC+OGp2mBm/n0QrbV32K1k/CfxYvBj0rtB1bGkw6 h7nLUdQbA/QwxkyfceWn4ERMauRAH3UejiN/hQEPLIglAIJk6j2U0ULOqqFRdpG7Pwuh 1+Tw== X-Gm-Message-State: ANhLgQ0FT3iIL3pQXtgOOyc/3FCvVOXX5aJIPB5Iz4Ivb6C0bBvbWYao HEqAbJjg4dLp9bNtEPZGkVs= X-Google-Smtp-Source: ADFU+vsbbtfrtTcEPcBnwDVoJjOhnY3Btye0NMC1YqgV/ccOYoLLVgFnoyawzXia49IdkdLbm4Putw== X-Received: by 2002:a62:ae0f:: with SMTP id q15mr1356340pff.72.1584082230069; Thu, 12 Mar 2020 23:50:30 -0700 (PDT) Received: from localhost.localdomain ([180.70.143.152]) by smtp.gmail.com with ESMTPSA id e12sm41713197pff.168.2020.03.12.23.50.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Mar 2020 23:50:29 -0700 (PDT) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, netdev@vger.kernel.org Cc: ap420073@gmail.com Subject: [PATCH net v2 2/3] hsr: add restart routine into hsr_get_node_list() Date: Fri, 13 Mar 2020 06:50:24 +0000 Message-Id: <20200313065024.32247-1-ap420073@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The hsr_get_node_list() is to send node addresses to the userspace. If there are so many nodes, it could fail because of buffer size. In order to avoid this failure, the restart routine is added. Fixes: f421436a591d ("net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0)") Signed-off-by: Taehee Yoo --- v1->v2: - Preserve reverse christmas tree variable ordering net/hsr/hsr_netlink.c | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c index d6760df2ad1f..726bfe923999 100644 --- a/net/hsr/hsr_netlink.c +++ b/net/hsr/hsr_netlink.c @@ -360,16 +360,14 @@ static int hsr_get_node_status(struct sk_buff *skb_in, struct genl_info *info) */ static int hsr_get_node_list(struct sk_buff *skb_in, struct genl_info *info) { - /* For receiving */ - struct nlattr *na; + unsigned char addr[ETH_ALEN]; struct net_device *hsr_dev; - - /* For sending */ struct sk_buff *skb_out; - void *msg_head; struct hsr_priv *hsr; - void *pos; - unsigned char addr[ETH_ALEN]; + bool restart = false; + struct nlattr *na; + void *pos = NULL; + void *msg_head; int res; if (!info) @@ -387,8 +385,9 @@ static int hsr_get_node_list(struct sk_buff *skb_in, struct genl_info *info) if (!is_hsr_master(hsr_dev)) goto rcu_unlock; +restart: /* Send reply */ - skb_out = genlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC); + skb_out = genlmsg_new(GENLMSG_DEFAULT_SIZE, GFP_ATOMIC); if (!skb_out) { res = -ENOMEM; goto fail; @@ -402,17 +401,28 @@ static int hsr_get_node_list(struct sk_buff *skb_in, struct genl_info *info) goto nla_put_failure; } - res = nla_put_u32(skb_out, HSR_A_IFINDEX, hsr_dev->ifindex); - if (res < 0) - goto nla_put_failure; + if (!restart) { + res = nla_put_u32(skb_out, HSR_A_IFINDEX, hsr_dev->ifindex); + if (res < 0) + goto nla_put_failure; + } hsr = netdev_priv(hsr_dev); - pos = hsr_get_next_node(hsr, NULL, addr); + if (!pos) + pos = hsr_get_next_node(hsr, NULL, addr); while (pos) { res = nla_put(skb_out, HSR_A_NODE_ADDR, ETH_ALEN, addr); - if (res < 0) + if (res < 0) { + if (res == -EMSGSIZE) { + genlmsg_end(skb_out, msg_head); + genlmsg_unicast(genl_info_net(info), skb_out, + info->snd_portid); + restart = true; + goto restart; + } goto nla_put_failure; + } pos = hsr_get_next_node(hsr, pos, addr); } rcu_read_unlock(); @@ -429,7 +439,7 @@ static int hsr_get_node_list(struct sk_buff *skb_in, struct genl_info *info) return 0; nla_put_failure: - kfree_skb(skb_out); + nlmsg_free(skb_out); /* Fall through */ fail: From patchwork Fri Mar 13 06:50:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 1254267 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=uzeeEP1d; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48dxD14rBNz9sPF for ; Fri, 13 Mar 2020 17:50:41 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726462AbgCMGuk (ORCPT ); Fri, 13 Mar 2020 02:50:40 -0400 Received: from mail-pg1-f195.google.com ([209.85.215.195]:43436 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726001AbgCMGuk (ORCPT ); Fri, 13 Mar 2020 02:50:40 -0400 Received: by mail-pg1-f195.google.com with SMTP id u12so4410436pgb.10 for ; Thu, 12 Mar 2020 23:50:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=rKoLMWAEb8bVDQaI+0K2QIouDx3X1f41EflyGqJejAw=; b=uzeeEP1dUa5SHkVGm+hMX2iPibbexesB4zKnMev7s4pMXUUzqL7TotTge4Xgg23CkP 8PhUTfSySNKwMkEXk9lczLogJRj5WzRRo2EC0J1Zdd59hV4+z/tpMYNFp3NPdiTBV3A/ yHx2uADZY4Ijds2Yrmr28S1UjhwDwBWwPTnCwdHuECKV6u4W4b3ZNmMqWnQPfkNlgOaF lNxRtlXry98S8fbm1G2k69m7HSlVUVE8UGRfEYr2sfJ/v0WaMFj5DQIXEYVMCtb+yDp/ GSQGe3GuKABW+MD9ku0scZQpvdbwrFh/Qe/RiKOvAKqTr8bMPDifbuWFMyn1A/6/fVmy 9Fzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=rKoLMWAEb8bVDQaI+0K2QIouDx3X1f41EflyGqJejAw=; b=RMNkHht/k0ISDyDMf4urIRW3NDuVhQYVRffdo8HOMkhiIyPcCAP2CejT5srIV8VmP7 f4qzk2YBWMBlAdfO72bXDWAPcfY2hIjnnbHoBI44Uusws8AGIlQRg/BvYXP8Ot3LBS/A tkgp3YgbIwdoIFUYuvb1nZfupfQnphpe060xJNDJadfX+lWJUkKIzjhcyvn0RVfwRLGB RkKoADmn602U2DYVM8Afp6CjuxYDdwJFX2F/Zxz/hZ7qbwEebPJk9yMDUILKjJ8JCwS4 dkYYanyw2X8Pursk3dqIts22oncCIMazEHfqFKFuY6Z6wIVWPRORwBv9smgsOLIYH6Ft exLg== X-Gm-Message-State: ANhLgQ23YVkIhtnSJgTZmJfImefv/kTL6NBDj333GtF49/FfPcfMOLMB By7FVUn4yiI5Bpn0qnwRFlM= X-Google-Smtp-Source: ADFU+vu5DyPhGip3hUuXRpyj/72LgrmiQwrrptPQuPsvWg9SecjL8ZiAMNIoyW0vhyHWCShn5NtQAg== X-Received: by 2002:a63:114a:: with SMTP id 10mr11353697pgr.185.1584082239575; Thu, 12 Mar 2020 23:50:39 -0700 (PDT) Received: from localhost.localdomain ([180.70.143.152]) by smtp.gmail.com with ESMTPSA id a71sm19297937pfa.162.2020.03.12.23.50.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Mar 2020 23:50:38 -0700 (PDT) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, netdev@vger.kernel.org Cc: ap420073@gmail.com Subject: [PATCH net v2 3/3] hsr: set .netnsok flag Date: Fri, 13 Mar 2020 06:50:33 +0000 Message-Id: <20200313065033.32326-1-ap420073@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The hsr module has been supporting the list and status command. (HSR_C_GET_NODE_LIST and HSR_C_GET_NODE_STATUS) These commands send node information to the user-space via generic netlink. But, in the non-init_net namespace, these commands are not allowed because .netnsok flag is false. So, there is no way to get node information in the non-init_net namespace. Fixes: f421436a591d ("net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0)") Signed-off-by: Taehee Yoo --- v1->v2: - This patch is not changed net/hsr/hsr_netlink.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c index 726bfe923999..fae21c863b1f 100644 --- a/net/hsr/hsr_netlink.c +++ b/net/hsr/hsr_netlink.c @@ -470,6 +470,7 @@ static struct genl_family hsr_genl_family __ro_after_init = { .version = 1, .maxattr = HSR_A_MAX, .policy = hsr_genl_policy, + .netnsok = true, .module = THIS_MODULE, .ops = hsr_ops, .n_ops = ARRAY_SIZE(hsr_ops),