Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2195338/?format=api
{ "id": 2195338, "url": "http://patchwork.ozlabs.org/api/patches/2195338/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/db602a83022c69230080087539e4b68d6b9107ee.1770753117.git.balaton@eik.bme.hu/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<db602a83022c69230080087539e4b68d6b9107ee.1770753117.git.balaton@eik.bme.hu>", "list_archive_url": null, "date": "2026-02-10T20:02:09", "name": "[v3,1/6] memory: Add memory_region_new* functions", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "2ccadf9ff3db3da808e84743b7aa8f01b2b89b15", "submitter": { "id": 16148, "url": "http://patchwork.ozlabs.org/api/people/16148/?format=api", "name": "BALATON Zoltan", "email": "balaton@eik.bme.hu" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/db602a83022c69230080087539e4b68d6b9107ee.1770753117.git.balaton@eik.bme.hu/mbox/", "series": [ { "id": 491733, "url": "http://patchwork.ozlabs.org/api/series/491733/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=491733", "date": "2026-02-10T20:02:11", "name": "Implement memory_region_new_* functions", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/491733/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2195338/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2195338/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)", "Received": [ "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4f9XYZ6pvNz1xx7\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 11 Feb 2026 07:03:13 +1100 (AEDT)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1vptwT-0000re-Nb; Tue, 10 Feb 2026 15:02:39 -0500", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <balaton@eik.bme.hu>)\n id 1vptwG-0000oz-AJ\n for qemu-devel@nongnu.org; Tue, 10 Feb 2026 15:02:25 -0500", "from zero.eik.bme.hu ([152.66.115.2])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <balaton@eik.bme.hu>)\n id 1vptwA-00050d-QD\n for qemu-devel@nongnu.org; Tue, 10 Feb 2026 15:02:22 -0500", "from localhost (localhost [127.0.0.1])\n by zero.eik.bme.hu (Postfix) with ESMTP id 581D0596A10;\n Tue, 10 Feb 2026 21:02:11 +0100 (CET)", "from zero.eik.bme.hu ([127.0.0.1])\n by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP\n id BnPQAovbLwJZ; Tue, 10 Feb 2026 21:02:09 +0100 (CET)", "by zero.eik.bme.hu (Postfix, from userid 432)\n id 441775969F6; Tue, 10 Feb 2026 21:02:09 +0100 (CET)" ], "X-Virus-Scanned": "amavis at eik.bme.hu", "Message-ID": "\n <db602a83022c69230080087539e4b68d6b9107ee.1770753117.git.balaton@eik.bme.hu>", "In-Reply-To": "<cover.1770753117.git.balaton@eik.bme.hu>", "References": "<cover.1770753117.git.balaton@eik.bme.hu>", "From": "BALATON Zoltan <balaton@eik.bme.hu>", "Subject": "[PATCH v3 1/6] memory: Add memory_region_new* functions", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "To": "qemu-devel@nongnu.org", "Cc": "Peter Xu <peterx@redhat.com>,\n Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>,\n Paolo Bonzini <pbonzini@redhat.com>,\n Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,\n Gerd Hoffmann <kraxel@redhat.com>, Max Filippov <jcmvbkbc@gmail.com>,\n Peter Maydell <peter.maydell@linaro.org>, =?utf-8?q?Philippe_Mathieu-Daud?=\n\t=?utf-8?q?=C3=A9?= <philmd@linaro.org>", "Date": "Tue, 10 Feb 2026 21:02:09 +0100 (CET)", "Received-SPF": "pass client-ip=152.66.115.2; envelope-from=balaton@eik.bme.hu;\n helo=zero.eik.bme.hu", "X-Spam_score_int": "-18", "X-Spam_score": "-1.9", "X-Spam_bar": "-", "X-Spam_report": "(-1.9 / 5.0 requ) BAYES_00=-1.9,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no", "X-Spam_action": "no action", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "qemu development <qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org" }, "content": "These are counterparts of similar memory_region_init* functions but\ndiffer in that these allocate the memory region with object_new so the\nmemory region will be managed by QOM and freed with the owner. This\nbehaviour was already documented and the reference tracking is\nimplemented but it could not be used without these functions because\nmemory_region_init* functions call object_initialize that clears the\nfree function of the object so it would not be freed.\n\nSigned-off-by: BALATON Zoltan <balaton@eik.bme.hu>\n---\n include/system/memory.h | 81 ++++++++++++++++++\n system/memory.c | 181 ++++++++++++++++++++++++++++++++++++++++\n 2 files changed, 262 insertions(+)", "diff": "diff --git a/include/system/memory.h b/include/system/memory.h\nindex d4793a08a7..ab76433c54 100644\n--- a/include/system/memory.h\n+++ b/include/system/memory.h\n@@ -1324,6 +1324,10 @@ void memory_region_init(MemoryRegion *mr,\n const char *name,\n uint64_t size);\n \n+MemoryRegion *memory_region_new(Object *owner,\n+ const char *name,\n+ uint64_t size);\n+\n /**\n * memory_region_ref: Add 1 to a memory region's reference count\n *\n@@ -1374,6 +1378,12 @@ void memory_region_init_io(MemoryRegion *mr,\n const char *name,\n uint64_t size);\n \n+MemoryRegion *memory_region_new_io(Object *owner,\n+ const MemoryRegionOps *ops,\n+ void *opaque,\n+ const char *name,\n+ uint64_t size);\n+\n /**\n * memory_region_init_ram_flags_nomigrate: Initialize RAM memory region.\n * Accesses into the region will\n@@ -1400,6 +1410,12 @@ bool memory_region_init_ram_flags_nomigrate(MemoryRegion *mr,\n uint32_t ram_flags,\n Error **errp);\n \n+MemoryRegion *memory_region_new_ram_flags_nomigrate(Object *owner,\n+ const char *name,\n+ uint64_t size,\n+ uint32_t ram_flags,\n+ Error **errp);\n+\n /**\n * memory_region_init_resizeable_ram: Initialize memory region with resizable\n * RAM. Accesses into the region will\n@@ -1432,6 +1448,16 @@ bool memory_region_init_resizeable_ram(MemoryRegion *mr,\n uint64_t length,\n void *host),\n Error **errp);\n+\n+MemoryRegion *memory_region_new_resizeable_ram(Object *owner,\n+ const char *name,\n+ uint64_t size,\n+ uint64_t max_size,\n+ void (*resized)(const char*,\n+ uint64_t length,\n+ void *host),\n+ Error **errp);\n+\n #ifdef CONFIG_POSIX\n \n /**\n@@ -1467,6 +1493,15 @@ bool memory_region_init_ram_from_file(MemoryRegion *mr,\n ram_addr_t offset,\n Error **errp);\n \n+MemoryRegion *memory_region_new_ram_from_file(Object *owner,\n+ const char *name,\n+ uint64_t size,\n+ uint64_t align,\n+ uint32_t ram_flags,\n+ const char *path,\n+ ram_addr_t offset,\n+ Error **errp);\n+\n /**\n * memory_region_init_ram_from_fd: Initialize RAM memory region with a\n * mmap-ed backend.\n@@ -1495,6 +1530,15 @@ bool memory_region_init_ram_from_fd(MemoryRegion *mr,\n int fd,\n ram_addr_t offset,\n Error **errp);\n+\n+MemoryRegion *memory_region_new_ram_from_fd(Object *owner,\n+ const char *name,\n+ uint64_t size,\n+ uint32_t ram_flags,\n+ int fd,\n+ ram_addr_t offset,\n+ Error **errp);\n+\n #endif\n \n /**\n@@ -1518,6 +1562,11 @@ void memory_region_init_ram_ptr(MemoryRegion *mr,\n uint64_t size,\n void *ptr);\n \n+MemoryRegion *memory_region_new_ram_ptr(Object *owner,\n+ const char *name,\n+ uint64_t size,\n+ void *ptr);\n+\n /**\n * memory_region_init_ram_device_ptr: Initialize RAM device memory region from\n * a user-provided pointer.\n@@ -1546,6 +1595,11 @@ void memory_region_init_ram_device_ptr(MemoryRegion *mr,\n uint64_t size,\n void *ptr);\n \n+MemoryRegion *memory_region_new_ram_device_ptr(Object *owner,\n+ const char *name,\n+ uint64_t size,\n+ void *ptr);\n+\n /**\n * memory_region_init_alias: Initialize a memory region that aliases all or a\n * part of another memory region.\n@@ -1565,6 +1619,12 @@ void memory_region_init_alias(MemoryRegion *mr,\n hwaddr offset,\n uint64_t size);\n \n+MemoryRegion *memory_region_new_alias(Object *owner,\n+ const char *name,\n+ MemoryRegion *orig,\n+ hwaddr offset,\n+ uint64_t size);\n+\n /**\n * memory_region_init_iommu: Initialize a memory region of a custom type\n * that translates addresses\n@@ -1630,6 +1690,16 @@ bool memory_region_init_ram_guest_memfd(MemoryRegion *mr,\n uint64_t size,\n Error **errp);\n \n+MemoryRegion *memory_region_new_ram(Object *owner,\n+ const char *name,\n+ uint64_t size,\n+ Error **errp);\n+\n+MemoryRegion *memory_region_new_ram_guest_memfd(Object *owner,\n+ const char *name,\n+ uint64_t size,\n+ Error **errp);\n+\n /**\n * memory_region_init_rom: Initialize a ROM memory region.\n *\n@@ -1659,6 +1729,11 @@ bool memory_region_init_rom(MemoryRegion *mr,\n uint64_t size,\n Error **errp);\n \n+MemoryRegion *memory_region_new_rom(Object *owner,\n+ const char *name,\n+ uint64_t size,\n+ Error **errp);\n+\n /**\n * memory_region_init_rom_device: Initialize a ROM memory region.\n * Writes are handled via callbacks.\n@@ -1694,6 +1769,12 @@ bool memory_region_init_rom_device(MemoryRegion *mr,\n uint64_t size,\n Error **errp);\n \n+MemoryRegion *memory_region_new_rom_device(Object *owner,\n+ const MemoryRegionOps *ops,\n+ void *opaque,\n+ const char *name,\n+ uint64_t size,\n+ Error **errp);\n \n /**\n * memory_region_owner: get a memory region's owner.\ndiff --git a/system/memory.c b/system/memory.c\nindex fa3e19e1fd..d125e8102b 100644\n--- a/system/memory.c\n+++ b/system/memory.c\n@@ -1251,6 +1251,15 @@ void memory_region_init(MemoryRegion *mr,\n memory_region_do_init(mr, owner, name, size);\n }\n \n+MemoryRegion *memory_region_new(Object *owner, const char *name, uint64_t size)\n+{\n+ MemoryRegion *mr = MEMORY_REGION(object_new(TYPE_MEMORY_REGION));\n+\n+ assert(name); /* mr is attached to owner by name */\n+ memory_region_do_init(mr, owner, name, size);\n+ return mr;\n+}\n+\n static void memory_region_get_container(Object *obj, Visitor *v,\n const char *name, void *opaque,\n Error **errp)\n@@ -1576,6 +1585,16 @@ void memory_region_init_io(MemoryRegion *mr, Object *owner,\n memory_region_set_ops(mr, ops, opaque);\n }\n \n+MemoryRegion *memory_region_new_io(Object *owner,\n+ const MemoryRegionOps *ops, void *opaque,\n+ const char *name, uint64_t size)\n+{\n+ MemoryRegion *mr = memory_region_new(owner, name, size);\n+\n+ memory_region_set_ops(mr, ops, opaque);\n+ return mr;\n+}\n+\n static void memory_region_setup_ram(MemoryRegion *mr)\n {\n mr->ram = true;\n@@ -1607,6 +1626,20 @@ bool memory_region_init_ram_flags_nomigrate(MemoryRegion *mr, Object *owner,\n return memory_region_error_propagate(mr, err, errp);\n }\n \n+MemoryRegion *memory_region_new_ram_flags_nomigrate(Object *owner,\n+ const char *name,\n+ uint64_t size,\n+ uint32_t ram_flags,\n+ Error **errp)\n+{\n+ MemoryRegion *mr = memory_region_new(owner, name, size);\n+ Error *err = NULL;\n+\n+ memory_region_setup_ram(mr);\n+ mr->ram_block = qemu_ram_alloc(size, ram_flags, mr, &err);\n+ return memory_region_error_propagate(mr, err, errp) ? mr : NULL;\n+}\n+\n bool memory_region_init_resizeable_ram(MemoryRegion *mr,\n Object *owner,\n const char *name,\n@@ -1626,6 +1659,24 @@ bool memory_region_init_resizeable_ram(MemoryRegion *mr,\n return memory_region_error_propagate(mr, err, errp);\n }\n \n+MemoryRegion *memory_region_new_resizeable_ram(Object *owner,\n+ const char *name,\n+ uint64_t size,\n+ uint64_t max_size,\n+ void (*resized)(const char*,\n+ uint64_t length,\n+ void *host),\n+ Error **errp)\n+{\n+ MemoryRegion *mr = memory_region_new(owner, name, size);\n+ Error *err = NULL;\n+\n+ memory_region_setup_ram(mr);\n+ mr->ram_block = qemu_ram_alloc_resizeable(size, max_size, resized, mr,\n+ &err);\n+ return memory_region_error_propagate(mr, err, errp) ? mr : NULL;\n+}\n+\n #if defined(CONFIG_POSIX) && !defined(EMSCRIPTEN)\n bool memory_region_init_ram_from_file(MemoryRegion *mr, Object *owner,\n const char *name, uint64_t size,\n@@ -1644,6 +1695,26 @@ bool memory_region_init_ram_from_file(MemoryRegion *mr, Object *owner,\n return memory_region_error_propagate(mr, err, errp);\n }\n \n+MemoryRegion *memory_region_new_ram_from_file(Object *owner,\n+ const char *name,\n+ uint64_t size,\n+ uint64_t align,\n+ uint32_t ram_flags,\n+ const char *path,\n+ ram_addr_t offset,\n+ Error **errp)\n+{\n+ MemoryRegion *mr = memory_region_new(owner, name, size);\n+ Error *err = NULL;\n+\n+ memory_region_setup_ram(mr);\n+ mr->readonly = !!(ram_flags & RAM_READONLY);\n+ mr->align = align;\n+ mr->ram_block = qemu_ram_alloc_from_file(size, mr, ram_flags, path, offset,\n+ &err);\n+ return memory_region_error_propagate(mr, err, errp) ? mr : NULL;\n+}\n+\n bool memory_region_init_ram_from_fd(MemoryRegion *mr, Object *owner,\n const char *name, uint64_t size,\n uint32_t ram_flags, int fd,\n@@ -1658,6 +1729,21 @@ bool memory_region_init_ram_from_fd(MemoryRegion *mr, Object *owner,\n offset, false, &err);\n return memory_region_error_propagate(mr, err, errp);\n }\n+\n+MemoryRegion *memory_region_new_ram_from_fd(Object *owner,\n+ const char *name, uint64_t size,\n+ uint32_t ram_flags, int fd,\n+ ram_addr_t offset, Error **errp)\n+{\n+ MemoryRegion *mr = memory_region_new(owner, name, size);\n+ Error *err = NULL;\n+\n+ memory_region_setup_ram(mr);\n+ mr->readonly = !!(ram_flags & RAM_READONLY);\n+ mr->ram_block = qemu_ram_alloc_from_fd(size, size, NULL, mr, ram_flags, fd,\n+ offset, false, &err);\n+ return memory_region_error_propagate(mr, err, errp) ? mr : NULL;\n+}\n #endif\n \n static void memory_region_setup_ram_ptr(MemoryRegion *mr, uint64_t size,\n@@ -1676,6 +1762,15 @@ void memory_region_init_ram_ptr(MemoryRegion *mr, Object *owner,\n memory_region_setup_ram_ptr(mr, size, ptr);\n }\n \n+MemoryRegion *memory_region_new_ram_ptr(Object *owner, const char *name,\n+ uint64_t size, void *ptr)\n+{\n+ MemoryRegion *mr = memory_region_new(owner, name, size);\n+\n+ memory_region_setup_ram_ptr(mr, size, ptr);\n+ return mr;\n+}\n+\n void memory_region_init_ram_device_ptr(MemoryRegion *mr, Object *owner,\n const char *name, uint64_t size,\n void *ptr)\n@@ -1685,6 +1780,17 @@ void memory_region_init_ram_device_ptr(MemoryRegion *mr, Object *owner,\n mr->ram_device = true;\n }\n \n+MemoryRegion *memory_region_new_ram_device_ptr(Object *owner, const char *name,\n+ uint64_t size, void *ptr)\n+{\n+ MemoryRegion *mr = memory_region_new(owner, name, size);\n+\n+ memory_region_set_ops(mr, &ram_device_mem_ops, mr);\n+ memory_region_setup_ram_ptr(mr, size, ptr);\n+ mr->ram_device = true;\n+ return mr;\n+}\n+\n void memory_region_init_alias(MemoryRegion *mr, Object *owner,\n const char *name, MemoryRegion *orig,\n hwaddr offset, uint64_t size)\n@@ -1694,6 +1800,17 @@ void memory_region_init_alias(MemoryRegion *mr, Object *owner,\n mr->alias_offset = offset;\n }\n \n+MemoryRegion *memory_region_new_alias(Object *owner,\n+ const char *name, MemoryRegion *orig,\n+ hwaddr offset, uint64_t size)\n+{\n+ MemoryRegion *mr = memory_region_new(owner, name, size);\n+\n+ mr->alias = orig;\n+ mr->alias_offset = offset;\n+ return mr;\n+}\n+\n void memory_region_init_iommu(void *_iommu_mr,\n size_t instance_size,\n const char *mrtypename,\n@@ -3669,6 +3786,19 @@ bool memory_region_init_ram(MemoryRegion *mr, Object *owner,\n return true;\n }\n \n+MemoryRegion *memory_region_new_ram(Object *owner,\n+ const char *name, uint64_t size,\n+ Error **errp)\n+{\n+ MemoryRegion *mr;\n+\n+ mr = memory_region_new_ram_flags_nomigrate(owner, name, size, 0, errp);\n+ if (mr) {\n+ memory_region_register_ram(mr, owner);\n+ }\n+ return mr;\n+}\n+\n bool memory_region_init_ram_guest_memfd(MemoryRegion *mr, Object *owner,\n const char *name, uint64_t size,\n Error **errp)\n@@ -3681,6 +3811,21 @@ bool memory_region_init_ram_guest_memfd(MemoryRegion *mr, Object *owner,\n return true;\n }\n \n+MemoryRegion *memory_region_new_ram_guest_memfd(Object *owner,\n+ const char *name,\n+ uint64_t size,\n+ Error **errp)\n+{\n+ MemoryRegion *mr;\n+\n+ mr = memory_region_new_ram_flags_nomigrate(owner, name, size,\n+ RAM_GUEST_MEMFD, errp);\n+ if (mr) {\n+ memory_region_register_ram(mr, owner);\n+ }\n+ return mr;\n+}\n+\n bool memory_region_init_rom(MemoryRegion *mr, Object *owner,\n const char *name, uint64_t size,\n Error **errp)\n@@ -3694,6 +3839,20 @@ bool memory_region_init_rom(MemoryRegion *mr, Object *owner,\n return true;\n }\n \n+MemoryRegion *memory_region_new_rom(Object *owner,\n+ const char *name, uint64_t size,\n+ Error **errp)\n+{\n+ MemoryRegion *mr;\n+\n+ mr = memory_region_new_ram_flags_nomigrate(owner, name, size, 0, errp);\n+ if (mr) {\n+ mr->readonly = true;\n+ memory_region_register_ram(mr, owner);\n+ }\n+ return mr;\n+}\n+\n bool memory_region_init_rom_device(MemoryRegion *mr, Object *owner,\n const MemoryRegionOps *ops, void *opaque,\n const char *name, uint64_t size,\n@@ -3714,6 +3873,28 @@ bool memory_region_init_rom_device(MemoryRegion *mr, Object *owner,\n return true;\n }\n \n+MemoryRegion *memory_region_new_rom_device(Object *owner,\n+ const MemoryRegionOps *ops,\n+ void *opaque,\n+ const char *name, uint64_t size,\n+ Error **errp)\n+{\n+ MemoryRegion *mr;\n+ Error *err = NULL;\n+\n+ assert(ops);\n+ mr = memory_region_new_io(owner, ops, opaque, name, size);\n+ memory_region_setup_ram(mr);\n+ mr->ram_block = qemu_ram_alloc(size, 0, mr, &err);\n+ if (!memory_region_error_propagate(mr, err, errp)) {\n+ return NULL;\n+ }\n+ mr->ram = false;\n+ mr->rom_device = true;\n+ memory_region_register_ram(mr, owner);\n+ return mr;\n+}\n+\n /*\n * Support system builds with CONFIG_FUZZ using a weak symbol and a stub for\n * the fuzz_dma_read_cb callback\n", "prefixes": [ "v3", "1/6" ] }