memory: Assert that memory_region_init_rom_device() ops aren't NULL

It doesn't make sense to pass a NULL ops argument to
memory_region_init_rom_device(), because the effect will
be that if the guest tries to write to the memory region
then QEMU will segfault. Catch the bug earlier by sanity
checking the arguments to this function, and remove the
misleading documentation that suggests that passing NULL
might be sensible.

Backports commit 39e0b03dec518254fabd2acff29548d3f1d2b754 from qemu
This commit is contained in:
Peter Maydell 2018-02-25 00:29:47 -05:00 committed by Lioncash
parent 334e951ec1
commit efc6cc2b83
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -416,12 +416,9 @@ void memory_region_init_rom(struct uc_struct *uc,
* memory_region_init_rom_device: Initialize a ROM memory region. Writes are
* handled via callbacks.
*
* If NULL callbacks pointer is given, then I/O space is not supposed to be
* handled by QEMU itself. Any access via the memory API will cause an abort().
*
* @mr: the #MemoryRegion to be initialized.
* @owner: the object that tracks the region's reference count
* @ops: callbacks for write access handling.
* @ops: callbacks for write access handling (must not be NULL).
* @name: the name of the region.
* @size: size of the region.
* @errp: pointer to Error*, to store an error if it happens.