From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Samudrala, Sridhar" Subject: Re: [PATCH net-next v10 2/4] net: Introduce generic failover module Date: Mon, 7 May 2018 17:24:27 -0700 Message-ID: References: <1525731046-10989-1-git-send-email-sridhar.samudrala@intel.com> <1525731046-10989-3-git-send-email-sridhar.samudrala@intel.com> <20180507165306.541bd1f2@xeon-e3> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Cc: mst@redhat.com, davem@davemloft.net, netdev@vger.kernel.org, virtualization@lists.linux-foundation.org, virtio-dev@lists.oasis-open.org, jesse.brandeburg@intel.com, alexander.h.duyck@intel.com, kubakici@wp.pl, jasowang@redhat.com, loseweigh@gmail.com, jiri@resnulli.us, aaron.f.brown@intel.com To: Stephen Hemminger Return-path: Received: from mga05.intel.com ([192.55.52.43]:12976 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753392AbeEHAY3 (ORCPT ); Mon, 7 May 2018 20:24:29 -0400 In-Reply-To: <20180507165306.541bd1f2@xeon-e3> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 5/7/2018 4:53 PM, Stephen Hemminger wrote: > On Mon, 7 May 2018 15:10:44 -0700 > Sridhar Samudrala wrote: > >> +static struct net_device *net_failover_get_bymac(u8 *mac, >> + struct net_failover_ops **ops) >> +{ >> + struct net_device *failover_dev; >> + struct net_failover *failover; >> + >> + spin_lock(&net_failover_lock); >> + list_for_each_entry(failover, &net_failover_list, list) { >> + failover_dev = rtnl_dereference(failover->failover_dev); >> + if (ether_addr_equal(failover_dev->perm_addr, mac)) { >> + *ops = rtnl_dereference(failover->ops); >> + spin_unlock(&net_failover_lock); >> + return failover_dev; >> + } >> + } >> + spin_unlock(&net_failover_lock); >> + return NULL; >> +} > This is broken if non-ethernet devices such as Infiniband are present. There is check to make sure that a slave and failover devices are of the same type in net_failover_slave_register() failover_dev = net_failover_get_bymac(slave_dev->perm_addr, &nfo_ops);         if (!failover_dev)                 goto done;         if (failover_dev->type != slave_dev->type)                 goto done; Do you think this is not good enough? I had an explicit check for ARPHRD_ETHER in earlier patchsets, but removed it based on Jiri's comment.