Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 May 2025 11:29:24 GMT
From:      Krzysztof Galazka <kgalazka@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 413197cef9cc - main - ppt: Fix panic when configuring unavailable MSI-X vector
Message-ID:  <202505161129.54GBTOHG022748@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by kgalazka:

URL: https://cgit.FreeBSD.org/src/commit/?id=413197cef9ccbf22831eb914c2ef469880468d97

commit 413197cef9ccbf22831eb914c2ef469880468d97
Author:     Krzysztof Galazka <kgalazka@FreeBSD.org>
AuthorDate: 2025-05-16 11:29:08 +0000
Commit:     Krzysztof Galazka <kgalazka@FreeBSD.org>
CommitDate: 2025-05-16 11:29:08 +0000

    ppt: Fix panic when configuring unavailable MSI-X vector
    
    In some cases VM may have different idea about number
    of available MSI-X vectors then PPT driver. Return
    an error when VM requests setup for more vectors
    than expected.
    
    It was observed while using SR-IOV on an Intel E810 Ethernet adapter.
    VF driver in a VM sees a correct number of available MSI-X vectors,
    which depends on num-queues assigned in iovctl.conf, while
    pci_msix_count in the PPT driver always returns 1.
    
    Signed-off-by: Krzysztof Galazka <kgalazka@FreeBSD.org>
    Reviewed By:    #bhyve, jhb
    Approved by:    erj (mentor), kbowling (mentor)
    MFC after:      1 week
    Sponsored by:   Intel Corporation
    Differential Revision:  https://reviews.freebsd.org/D48812
---
 sys/amd64/vmm/io/ppt.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/sys/amd64/vmm/io/ppt.c b/sys/amd64/vmm/io/ppt.c
index c3b2b57da988..2cb459fb848f 100644
--- a/sys/amd64/vmm/io/ppt.c
+++ b/sys/amd64/vmm/io/ppt.c
@@ -750,6 +750,9 @@ ppt_setup_msix(struct vm *vm, int bus, int slot, int func,
 		}
 	}
 
+	if (idx >= ppt->msix.num_msgs)
+		return (EINVAL);
+
 	if ((vector_control & PCIM_MSIX_VCTRL_MASK) == 0) {
 		/* Tear down the IRQ if it's already set up */
 		ppt_teardown_msix_intr(ppt, idx);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202505161129.54GBTOHG022748>