The problem is that you can't statically confirm this via static analysis when you use recursive locks. You can only use runtime lock dep analysis to figure out when you might have gotten it wrong. Often you may not acquire locks in the same function, so it's not very intuitive based on control flow to understand whether or not you've acquired them in the wrong order.