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)
Wed, Nov 19, 3:31 AM
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

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 Skipped
Unit
Tests Skipped
Build Status
Buildable 65837
Build 62720: arc lint + arc unit

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.