On Wed, 24 Dec 2025, Peter Xu wrote:
On Tue, Dec 23, 2025 at 10:49:58PM +0100, BALATON Zoltan wrote:-bool memory_region_init_ram_nomigrate(MemoryRegion *mr, - Object *owner, - const char *name, - uint64_t size, - Error **errp) -{ - return memory_region_init_ram_flags_nomigrate(mr, owner, name, - size, 0, errp); -} - -bool memory_region_init_ram_flags_nomigrate(MemoryRegion *mr, - Object *owner, - const char *name, - uint64_t size, - uint32_t ram_flags, - Error **errp) +static bool memory_region_do_init_ram(MemoryRegion *mr, + Error *err, Error **errp) { - Error *err = NULL; - memory_region_init(mr, owner, name, size); mr->ram = true; mr->terminates = true; mr->destructor = memory_region_destructor_ram; - mr->ram_block = qemu_ram_alloc(size, ram_flags, mr, &err);If this is moved out, the err below will never be set. Maybe this helper then doesn't need errp at all.
err is an input parameter to this function as it consolidates common error handling so it does not have to be repeated at every caller.
Regards, BALATON Zoltan
if (err) { mr->size = int128_zero(); object_unparent(OBJECT(mr)); @@ -1611,6 +1594,25 @@ bool memory_region_init_ram_flags_nomigrate(MemoryRegion *mr, return true; }
