In the Linux kernel, the following vulnerability has been resolved:
Bluetooth: btusb: mediatek: Add locks for usbdriverclaim_interface()
The documentation for usbdriverclaim_interface() says that "the device lock" is needed when the function is called from places other than probe(). This appears to be the lock for the USB interface device. The Mediatek btusb code gets called via this path:
Workqueue: hci0 hcipoweron [bluetooth] Call trace: usbdriverclaiminterface btusbmtkclaimisointf btusbmtksetup hcidevopensync hcipoweron processscheduledworks worker_thread kthread
With the above call trace the device lock hasn't been claimed. Claim it.
Without this fix, we'd sometimes see the error "Failed to claim iso
interface". Sometimes we'd even see worse errors, like a NULL pointer
dereference (where intf->dev.driver
was NULL) with a trace like:
Call trace: usbsuspendboth usbruntimesuspend _rpmcallback rpmsuspend pmruntimework processscheduled_works
Both errors appear to be fixed with the proper locking.