Are there any critical-section folks or HAL team folks in the house? I'm looking at implementing the `lock-api` traits, specifically `RawMutex`, based on the `critical-section` trait, and I'm not *certain* how to correctly handle this. This is because critical-section is a *reentrant* lock, whereas RawMutex is a *non-reentrant* lock. If I were to do something like this, I'm a little worried this could go wrong: ```rust let lock_a = Mutex::::new(); let lock_b = Mutex::::new(); // This starts a critical section, and stores the RestoreState let mut guard_a = lock_a.lock(); // We're already in a critical section, allowed, stores the RestoreState again let mut guard_b = lock_b.lock(); // do some stuff // We now drop guard_a **first**, e.g. in FIFO order not LIFO order! // This restores the INITIAL restore state - e.g. unmasked primask on cortex-m drop(guard_a); // We now drop guard_b **second**, the restores the SECOND restore state, // e.g. masked primask on cortex-m! drop(guard_b); ```