The function nvram_init() uses sem_lock() and sem_unlock() before/after mount the tmpfs. But just like the annotation that Must get sempahore after NVRAM initialization, mounting will change ID, the locked sempahore and the unlocked sempahore should be different, and could lead to unpredicted side-effect.