The situation where QEMU crashes while attempting to call to a NULL function pointer from a non-initialised field in the MemoryRegionOps struct happens for the majority of emulated devices: One approach for solving this is to correct it for each device. The other approach is to correct the memory_region_read/write caller functions at memory.c to ensure that only initialised function pointers are being called. This approach has the benefit of solving this kind of error for all emulated devices.
The following patch adds function pointers checks to memory_region_read/write()