InnoDB data dictionary cache is protected by both dict_sys.latch (an RW-lock) and dict_sys.mutex. One reason for the redundant synchronization primitive would be eliminated by
MDEV-24167: the rw-lock should not be slower than a mutex.
Another reason for keeping a separate mutex is that sometimes, the mutex provides a mechanism to ‘upgrade’ the rw-lock. The most prominent case of that would be removed by
MDEV-23484, if we could guarantee that transaction rollback is always protected by MDL. Currently, the rollback of recovered transactions is not being protected by MDL.