There are other pathological cases which can cause it to happen, but
they are pretty unlikely.
I don't know why the mmc subsystem works differently from USB. In USB,
the equivalent of UNSAFE_RESUME is a per-device flag that can be
controlled via sysfs (see Documentation/usb/persist.txt). And it
almost always defaults to ON, i.e., the kernel assumes that if a device
is present before suspend and after resume it is the same device --
although some checking is done to try to verify this (the descriptors
have to remain the same). We started out being more cautious (the
default was OFF), but Linus complained about it being _too_ cautious.
And like you have done here, in USB the kernel thread that handles
registering and unregistering devices is freezable, so things never get
added or removed at an unsafe time.
Alan Stern
--