Date: Mon, 27 Oct 2025 14:34:33 GMT From: Justin Hibbits <jhibbits@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: cb3849930362 - main - x86/intr: Handle case of disabling MSI after release Message-ID: <202510271434.59REYXI3063363@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by jhibbits: URL: https://cgit.FreeBSD.org/src/commit/?id=cb38499303621553c977fd7dd7f18d12731fcd9c commit cb38499303621553c977fd7dd7f18d12731fcd9c Author: Justin Hibbits <jhibbits@FreeBSD.org> AuthorDate: 2025-10-26 02:45:26 +0000 Commit: Justin Hibbits <jhibbits@FreeBSD.org> CommitDate: 2025-10-27 14:33:49 +0000 x86/intr: Handle case of disabling MSI after release Once an interrupt source is registered it's never deregistered. However, when an MSI is released the pointer for it becomes NULLed out, resulting in a NULL pointer dereference when attempting to disable the now-released MSI source. Add NULL check to avoid this. Reviewed by: kib Sponsored by: Juniper Networks, Inc. Differential Revision: https://reviews.freebsd.org/D51624 --- sys/x86/x86/msi.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sys/x86/x86/msi.c b/sys/x86/x86/msi.c index 9d5a51f9753c..b38247bf6e45 100644 --- a/sys/x86/x86/msi.c +++ b/sys/x86/x86/msi.c @@ -219,6 +219,14 @@ msi_disable_intr(struct intsrc *isrc) struct msi_intsrc *msi = (struct msi_intsrc *)isrc; msi = msi->msi_first; + + /* + * Interrupt sources are always registered, but never unregistered. + * Handle the case where MSIs have all been unregistered. + */ + if (msi == NULL) + return; + msi->msi_enabled--; if (msi->msi_enabled == 0) { for (u_int i = 0; i < msi->msi_count; i++)home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202510271434.59REYXI3063363>
