Now
MAIN commitmail json YAML
uhidev(9): Fix race between uhidev_close and uhidev_intr.
uhidev_intr currently relies on the kernel lock to serialize access
to struct uhidev::sc_state, but if the driver's sc_intr function
sleeps (which it may do, even though this runs is softint context --
it may sleep on an adaptive lock), uhidev_close might return while
the driver's sc_intr function is still in flight.
This avoids that race, and makes progress toward MP-safe uhidev.
uhidev_intr currently relies on the kernel lock to serialize access
to struct uhidev::sc_state, but if the driver's sc_intr function
sleeps (which it may do, even though this runs is softint context --
it may sleep on an adaptive lock), uhidev_close might return while
the driver's sc_intr function is still in flight.
This avoids that race, and makes progress toward MP-safe uhidev.