Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp934095ybt; Wed, 17 Jun 2020 18:18:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwIlePGPj4p19tSLuOKj/RwhkHd2SLUNTv2hdYGlbaw/IcXOCBT56qrgsgoFGjaZj53KKgt X-Received: by 2002:aa7:c908:: with SMTP id b8mr1838455edt.76.1592443118589; Wed, 17 Jun 2020 18:18:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1592443118; cv=none; d=google.com; s=arc-20160816; b=u4jK2cs/tA1GDpqUY4mWejFeOiSSmaUT3w5Jtx/gg8nKeN9xog3f1HtNDYYlNyHxpv vEBu/x8HwtksW4iIII12BjaGtPSnX/2w1HjznvioZNvakfi3sA1FRjD05q9eEkJEsfN0 J/OWz07If5fWWZNC0wuactPrnG40MC6/vVJIw0xZCD4+SrZx/qJeTdZBX66JE7byBKwd l41ZaQfbm3ieghbYOe23gyIuYC0/H0SATRHZcjyFuuWv/6n4brqUhO8+2mEr0BO3RdC8 sgs1H2zE+xhRvHY8hNOiLGsjWheqWV+dsVblFBiIR8txSZarYi2+qeoWyqsiwlHp/iLZ Fgpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=FPjl9uSKprh4m62vMyIFFj+B8G5XtGdfAB4JnH8Rclk=; b=X9ytrU3h+tpIRvumIOIvJUc+r9/lUYXJp1T5SOHtZpIlxsRE/Ki67Gvw1ovBn911fK rR5FAnZ+EEwg+TRmsfRmuqmW0GiJ8V3A1eg90H6JtepRpU7oszT9XMk8Ho62QKTyD7ox wQdpAUZgEP7wdxO54GsNCKv97A4debaURRB+AF4TX5TgDTUYOFytn5YuYnUcrjsSkb3t vQ4grophsbcEhIpgxMfuHuhjIjwgETnju+qVAIrrEC569Crf8eA65bPOYWGopxvYOZG8 F6Sm95C80bmjP60sUb7d/k4Z4LjohsHdm/Bvt4dCoQuYFFQBrfIx8j2MpvxOAiAN+zhZ N5kA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="IXIV/z+1"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dn4si993910ejc.39.2020.06.17.18.18.16; Wed, 17 Jun 2020 18:18:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="IXIV/z+1"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727830AbgFRBOY (ORCPT + 99 others); Wed, 17 Jun 2020 21:14:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:42010 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729034AbgFRBND (ORCPT ); Wed, 17 Jun 2020 21:13:03 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 948B2221EF; Thu, 18 Jun 2020 01:13:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1592442783; bh=eaD84W3GW/ZIqkQYnnxcu2kJ30TFB3Y1Jad/xEldKic=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IXIV/z+1RWZDDjleVivak/NyFd+oLPxm/xM/Mo0F+6zkRYLHFUDzEdYbbDQP8F2hI LGVNMyxwrd9CmyAMW/h2MQzNlAfkNJ4UEaZFFD+Ou0qOywR9ATU3aLBHlDF36IfIqA rETf5Sb8hKwdgOiPJ6g2rWNxF0qVgKSBaDwmZfGE= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Alex Williamson , Cornelia Huck , Sasha Levin , kvm@vger.kernel.org Subject: [PATCH AUTOSEL 5.7 228/388] vfio-pci: Mask cap zero Date: Wed, 17 Jun 2020 21:05:25 -0400 Message-Id: <20200618010805.600873-228-sashal@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200618010805.600873-1-sashal@kernel.org> References: <20200618010805.600873-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Alex Williamson [ Upstream commit bc138db1b96264b9c1779cf18d5a3b186aa90066 ] The PCI Code and ID Assignment Specification changed capability ID 0 from reserved to a NULL capability in the v1.1 revision. The NULL capability is defined to include only the 16-bit capability header, ie. only the ID and next pointer. Unfortunately vfio-pci creates a map of config space, where ID 0 is used to reserve the standard type 0 header. Finding an actual capability with this ID therefore results in a bogus range marked in that map and conflicts with subsequent capabilities. As this seems to be a dummy capability anyway and we already support dropping capabilities, let's hide this one rather than delving into the potentially subtle dependencies within our map. Seen on an NVIDIA Tesla T4. Reviewed-by: Cornelia Huck Signed-off-by: Alex Williamson Signed-off-by: Sasha Levin --- drivers/vfio/pci/vfio_pci_config.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/vfio/pci/vfio_pci_config.c b/drivers/vfio/pci/vfio_pci_config.c index 43b95f9cdaf7..814bcbe0dd4e 100644 --- a/drivers/vfio/pci/vfio_pci_config.c +++ b/drivers/vfio/pci/vfio_pci_config.c @@ -1462,7 +1462,12 @@ static int vfio_cap_init(struct vfio_pci_device *vdev) if (ret) return ret; - if (cap <= PCI_CAP_ID_MAX) { + /* + * ID 0 is a NULL capability, conflicting with our fake + * PCI_CAP_ID_BASIC. As it has no content, consider it + * hidden for now. + */ + if (cap && cap <= PCI_CAP_ID_MAX) { len = pci_cap_length[cap]; if (len == 0xFF) { /* Variable length */ len = vfio_cap_len(vdev, cap, pos); -- 2.25.1