Received: by 2002:ab2:710b:0:b0:1ef:a325:1205 with SMTP id z11csp1899108lql; Wed, 13 Mar 2024 11:12:13 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVOIV2EU2g6LDI7b1ebyR2FR3q70ZEQo6NSbHv9zxErfQNxaoGQh4eC5aQ0YXWg3+vGeEsjup/Mzm4gDYsy4+H66Tm+tiXCs+uH9E1VHA== X-Google-Smtp-Source: AGHT+IGYeK+8ZvxtWcUrePomS9w6IFkB+Cw/doKMUA67rYnscASuZsxHH5N1xi5t+kgJB8gkkCAv X-Received: by 2002:ac8:5c8a:0:b0:42e:ec4c:473 with SMTP id r10-20020ac85c8a000000b0042eec4c0473mr14714644qta.14.1710353533535; Wed, 13 Mar 2024 11:12:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1710353533; cv=pass; d=google.com; s=arc-20160816; b=fmf/I1LCPWBIjVfe7qLJ1j51wWY3UhmoHphtCiAa79sactci5u9CvrI4wq5F3I4SCm azIR31T8XTOIbZ7IbwaxYjtUfgnFqebqJQqaKgmWJxGi01QfViHYDGmtjs5Ll+3eXiuU teyognwXsMB4G7HgLYODgacT8qA778zslfmdY06v9DfDPmkgs1ubef71NU0aiRghTDBF f5a9tyv/GXx8+vpOf8S0IMvBaM5bmAycNNs907AlU/N9AXFUD15wEX4fShhlY5sQVFF4 GcAOphiapPgqZ6UXXeI3MafPOIS/LcvsNubXGtkWmsWT6CHPEaYLGxoGLeUfHdKmzANX 1NFQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=iD1yy5vKZNubHMiVzcmuKD+jE/xIlCKsmvkFm1Jg/Ow=; fh=sVf0jAFl7F7OH/W59u9Bvg0bw4AwAHt0g4HwS3BnvBQ=; b=jRUWrDUvwPD+U3O1BeaC+vp992HA//CPdyCzut95uBMQFdj7ZCeM73Cdvr+gPJ6Il9 iKNmZCi1FQXF2fubLt8y1Pe6Amjc64Ltl8U9xoihPiwy0jjThS2M6/GbeLYUTJui/QQd TDoloPZp2M82+nCGAAwFBbPjl/8Q+6GC6tK5yDFRlz10cp/oPhce1WyDec4Wt58Ke4Nd V4FHORpBAfIEw/QK/3Zie+wfPWr4kxQsC4Np26vvSw8KeX/2CvQ8e3bQPNfU9O0r44il 4FyC1QMeM8+68sOOQnqbsTHFVmLeELEXwsR2apIJrw25rFHdvBRuHAMNmlAuT2wM1R5N X7ZQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="ap92/qfk"; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-102156-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-102156-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id p19-20020a05622a13d300b0042f3094ebc1si10340243qtk.140.2024.03.13.11.12.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Mar 2024 11:12:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-102156-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="ap92/qfk"; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-102156-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-102156-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 46BA51C22F7A for ; Wed, 13 Mar 2024 18:12:13 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 19E3D76904; Wed, 13 Mar 2024 17:02:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ap92/qfk" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E333768E0; Wed, 13 Mar 2024 17:02:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349373; cv=none; b=BycUUhxaghIjJUYRmMHT3v9SRIiRHFB3S5o1wCJ+JUhOWQSl3VHH4ZWEw80Ci9REs3r4LTmFdZiYPDPOoz/w207LlzG3RgRZcAvZzFRLgoAIJEVre50qQBntmIgw0eoV20F1HIxwhqs6REyQ9jj1rSr84BA2xYOgIaOb2Dmr5lw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710349373; c=relaxed/simple; bh=pFkNXq75aGO0DaHF7gFlIG78xlK6rzQ0KMOvTyjapYQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NFiCMDKMVUfxDuG+cpMlnBq90S/BbXCWRT0no2+KjRuRB3VU09mgLlaAoE+iu37FfW01HPPf+STsDermDGkCOTfyPygf8sekHcil+v8URQB/bNxs5GHweAMDNHW/jWfv/7bso7AACc2PPEqBXnCpPQUigw1dpao4y1cQtY8Ap84= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ap92/qfk; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0AE3FC433A6; Wed, 13 Mar 2024 17:02:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710349373; bh=pFkNXq75aGO0DaHF7gFlIG78xlK6rzQ0KMOvTyjapYQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ap92/qfk0FqZIOtYRQ3RHrxFwQUYa0e8dMoVwXPwak6P8i+Lf3MrZP9FYjxjenhDG xDAN+epdC2jYl1qXsV2nBDbhW9SzVGRqwOl9P4UMuRn+6hxIZdtJeX7jahOOLhGScm uT3aZt3mjMbUot6YvRfWCdyYPOgFutQcxbNkjkdK84HQMlp55jGpzU1IYJtv4J/hJV O4cxpVOYF2GkAfafk1WHFMOd8YHNof1lpp9I4o2D0bd/EAylo8K9jsmSKmeWS8cpGC ZA1zUSSLR+yySVUth5XBKgFx9I76u0Ew4/5+xFUq8xqWc8sCUA/Id93/gg356mj8Dn ElMnzU1OXuOMA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Dexuan Cui , Haiyang Zhang , Shachar Raindel , Stephen Hemminger , "David S . Miller" , Sasha Levin Subject: [PATCH 5.4 35/51] hv_netvsc: Make netvsc/VF binding check both MAC and serial number Date: Wed, 13 Mar 2024 13:01:56 -0400 Message-ID: <20240313170212.616443-36-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240313170212.616443-1-sashal@kernel.org> References: <20240313170212.616443-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.4.272-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-5.4.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 5.4.272-rc1 X-KernelTest-Deadline: 2024-03-15T17:02+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit From: Dexuan Cui [ Upstream commit 64ff412ad41fe3a5bf759ff4844dc1382176485c ] Currently the netvsc/VF binding logic only checks the PCI serial number. The Microsoft Azure Network Adapter (MANA) supports multiple net_device interfaces (each such interface is called a "vPort", and has its unique MAC address) which are backed by the same VF PCI device, so the binding logic should check both the MAC address and the PCI serial number. The change should not break any other existing VF drivers, because Hyper-V NIC SR-IOV implementation requires the netvsc network interface and the VF network interface have the same MAC address. Co-developed-by: Haiyang Zhang Signed-off-by: Haiyang Zhang Co-developed-by: Shachar Raindel Signed-off-by: Shachar Raindel Acked-by: Stephen Hemminger Signed-off-by: Dexuan Cui Signed-off-by: David S. Miller Stable-dep-of: 9cae43da9867 ("hv_netvsc: Register VF in netvsc_probe if NET_DEVICE_REGISTER missed") Signed-off-by: Sasha Levin --- drivers/net/hyperv/netvsc_drv.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index 31301cd242076..5697fe709f687 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -2153,8 +2153,17 @@ static struct net_device *get_netvsc_byslot(const struct net_device *vf_netdev) if (!ndev_ctx->vf_alloc) continue; - if (ndev_ctx->vf_serial == serial) - return hv_get_drvdata(ndev_ctx->device_ctx); + if (ndev_ctx->vf_serial != serial) + continue; + + ndev = hv_get_drvdata(ndev_ctx->device_ctx); + if (ndev->addr_len != vf_netdev->addr_len || + memcmp(ndev->perm_addr, vf_netdev->perm_addr, + ndev->addr_len) != 0) + continue; + + return ndev; + } /* Fallback path to check synthetic vf with help of mac addr. -- 2.43.0