Page MenuHomeFreeBSD

x86/intr: Handle case of disabling MSI after release
ClosedPublic

Authored by jhibbits on Jul 29 2025, 6:56 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Oct 31, 9:17 AM
Unknown Object (File)
Thu, Oct 30, 2:04 AM
Unknown Object (File)
Thu, Oct 30, 2:03 AM
Unknown Object (File)
Thu, Oct 30, 2:03 AM
Unknown Object (File)
Thu, Oct 30, 2:03 AM
Unknown Object (File)
Thu, Oct 30, 2:03 AM
Unknown Object (File)
Sat, Oct 25, 10:13 PM
Unknown Object (File)
Sat, Oct 25, 12:01 AM

Details

Summary

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.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

jhibbits created this revision.
sys/x86/x86/msi.c
222

Multi-line comment should have a blank line before it. It also should formatted like this:

/*
 * Interrupt sources are always registered, but never unregistered.
...
This revision is now accepted and ready to land.Aug 13 2025, 3:48 AM
ehem_freebsd_m5p.com added inline comments.
sys/x86/x86/msi.c
227–228

Have you ever actually seen this occur?

I believe this is impossible as it would mean isrc == NULL which shouldn't ever occur.