Add the missing locking as drivers always expect it (by assertion) and cannot distinguish between state. Add the assertions to the downcalls as we need both of them locked and both of them can sleep. PR: 298417
I tried to implement the changes to fix the bug, introduced in the PR, based on 5d479b75a894, which fixed the similar problem.