For whatever reason, there’s a lot of bluetooth code running with supervisor privileges in Linux.
This kind of issue is more or less unavoidable in a traditional monolithic unix kernel design, and you can bet there’s thousands of these all over the kernel, as unnecessary supervisor mode is systemic in Linux.
There’s better ways to do this. As a start, isolation of drivers as user processes.
I was curious if this could affect Android, but my surface-level googling indicates that it ships a different Bluetooth stack, “bluedroid”, instead of bluez.
Except this appears to require kernel patches to fix. Does the Android bluetooth stack also come with it’s own kernel modules, or does it use the ones that are already in the kernel?