From patchwork Fri Jan 12 19:56:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jon Maloy X-Patchwork-Id: 860173 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zJD6g696Vz9sBd for ; Sat, 13 Jan 2018 06:57:15 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965186AbeALT5L (ORCPT ); Fri, 12 Jan 2018 14:57:11 -0500 Received: from sesbmg22.ericsson.net ([193.180.251.48]:57488 "EHLO sesbmg22.ericsson.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753875AbeALT5K (ORCPT ); Fri, 12 Jan 2018 14:57:10 -0500 X-AuditID: c1b4fb30-d31ff70000006bc7-33-5a591314df7b Received: from ESESSHC011.ericsson.se (Unknown_Domain [153.88.183.51]) by sesbmg22.ericsson.net (Symantec Mail Security) with SMTP id FE.DC.27591.413195A5; Fri, 12 Jan 2018 20:57:09 +0100 (CET) Received: from tipsy.lab.linux.ericsson.se (10.35.28.120) by ESESSHC011.ericsson.se (153.88.183.51) with Microsoft SMTP Server (TLS) id 14.3.352.0; Fri, 12 Jan 2018 20:57:08 +0100 From: Jon Maloy To: , CC: , , , , , , Subject: [net-next 1/1] tipc: fix bug during lookup of multicast destination nodes Date: Fri, 12 Jan 2018 20:56:50 +0100 Message-ID: <1515787010-10082-1-git-send-email-jon.maloy@ericsson.com> X-Mailer: git-send-email 2.1.4 MIME-Version: 1.0 X-Originating-IP: [10.35.28.120] X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrKLMWRmVeSWpSXmKPExsUyM2K7sa6ocGSUwa0VjBY3GnqYLeacb2Gx ePtqFrvFsQViFlvOZ1lcaT/LbvH4+nVmB3aPLStvMnm8u8LmsXvBZyaPz5vkPNZv2coUwBrF ZZOSmpNZllqkb5fAlfHy1Qn2gg3SFdu+dzM3MC4T62Lk4JAQMJGY/MWki5GLQ0jgMKPEnM4Z rBDOdkaJrrMTmbsYOTnYBDQkXk7rYASxRQSMJV6t7GQCKWIW+MQo0bLyGRtIQlggWOLi1xdM IDaLgKpE09tWsAZeATeJ6yc7wOISAnIS54//ZIaIC0qcnPmEBcRmFpCQOPjiBVhcSEBZYu6H aVD1ChLfZnYzTWDkm4WkZRaSlgWMTKsYRYtTi5Ny042M9FKLMpOLi/Pz9PJSSzYxAgPz4Jbf BjsYXz53PMQowMGoxMPbzREZJcSaWFZcmXuIUYKDWUmEN+x0RJQQb0piZVVqUX58UWlOavEh RmkOFiVx3pOevFFCAumJJanZqakFqUUwWSYOTqkGxvjcqx2KXsfkmkUu6wpPXy8c3O/VvdDv J4OtdK+Gd4daa6xUbmb1Jrt3u6LmXL+xtsqw0uNnumLRftbSiTJBOjsvPtgWOotfLmuVlXZF eNHmYJnLErMmZXg7CPAfXSBYXDQ35e5J0e688FOfFOR0Z16ftDXag0EuSfcMu6VvwV5Vyz8T M6crsRRnJBpqMRcVJwIANizcI0gCAAA= Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In commit 232d07b74a33 ("tipc: improve groupcast scope handling") we inadvertently broke non-group multicast transmission when changing the parameter 'domain' to 'scope' in the function tipc_nametbl_lookup_dst_nodes(). We missed to make the corresponding change in the calling function, with the result that the lookup always fails. A closer anaysis reveals that this parameter is not needed at all. Non-group multicast is hard coded to use CLUSTER_SCOPE, and in the current implementation this will be delivered to all matching destinations except those which are published with NODE_SCOPE on other nodes. Since such publications never will be visible on the sending node anyway, it makes no sense to discriminate by scope at all. We now remove this parameter altogether. Signed-off-by: Jon Maloy --- net/tipc/name_table.c | 6 ++---- net/tipc/name_table.h | 3 +-- net/tipc/socket.c | 3 +-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/net/tipc/name_table.c b/net/tipc/name_table.c index 64cdd3c..ed0457c 100644 --- a/net/tipc/name_table.c +++ b/net/tipc/name_table.c @@ -680,8 +680,7 @@ int tipc_nametbl_mc_lookup(struct net *net, u32 type, u32 lower, u32 upper, * - Determines if any node local ports overlap */ void tipc_nametbl_lookup_dst_nodes(struct net *net, u32 type, u32 lower, - u32 upper, u32 scope, - struct tipc_nlist *nodes) + u32 upper, struct tipc_nlist *nodes) { struct sub_seq *sseq, *stop; struct publication *publ; @@ -699,8 +698,7 @@ void tipc_nametbl_lookup_dst_nodes(struct net *net, u32 type, u32 lower, for (; sseq != stop && sseq->lower <= upper; sseq++) { info = sseq->info; list_for_each_entry(publ, &info->zone_list, zone_list) { - if (publ->scope == scope) - tipc_nlist_add(nodes, publ->node); + tipc_nlist_add(nodes, publ->node); } } spin_unlock_bh(&seq->lock); diff --git a/net/tipc/name_table.h b/net/tipc/name_table.h index b595d8a..f56e7cb 100644 --- a/net/tipc/name_table.h +++ b/net/tipc/name_table.h @@ -105,8 +105,7 @@ int tipc_nametbl_mc_lookup(struct net *net, u32 type, u32 lower, u32 upper, void tipc_nametbl_build_group(struct net *net, struct tipc_group *grp, u32 type, u32 domain); void tipc_nametbl_lookup_dst_nodes(struct net *net, u32 type, u32 lower, - u32 upper, u32 domain, - struct tipc_nlist *nodes); + u32 upper, struct tipc_nlist *nodes); bool tipc_nametbl_lookup(struct net *net, u32 type, u32 instance, u32 domain, struct list_head *dsts, int *dstcnt, u32 exclude, bool all); diff --git a/net/tipc/socket.c b/net/tipc/socket.c index 1f23627..18fca5b 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c @@ -772,7 +772,6 @@ static int tipc_sendmcast(struct socket *sock, struct tipc_name_seq *seq, struct net *net = sock_net(sk); int mtu = tipc_bcast_get_mtu(net); struct tipc_mc_method *method = &tsk->mc_method; - u32 domain = addr_domain(net, TIPC_CLUSTER_SCOPE); struct sk_buff_head pkts; struct tipc_nlist dsts; int rc; @@ -788,7 +787,7 @@ static int tipc_sendmcast(struct socket *sock, struct tipc_name_seq *seq, /* Lookup destination nodes */ tipc_nlist_init(&dsts, tipc_own_addr(net)); tipc_nametbl_lookup_dst_nodes(net, seq->type, seq->lower, - seq->upper, domain, &dsts); + seq->upper, &dsts); if (!dsts.local && !dsts.remote) return -EHOSTUNREACH;