qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH, v2] physmem: avoid bounce buffer too small
@ 2024-02-28 12:59 Heinrich Schuchardt
  2024-02-28 15:06 ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 19+ messages in thread
From: Heinrich Schuchardt @ 2024-02-28 12:59 UTC (permalink / raw)
  To: Paolo Bonzini, Peter Xu, David Hildenbrand
  Cc: Philippe Mathieu-Daudé, qemu-devel, Heinrich Schuchardt

virtqueue_map_desc() is called with values of sz exceeding that may exceed
TARGET_PAGE_SIZE. sz = 0x2800 has been observed.

We only support a single bounce buffer. We have to avoid
virtqueue_map_desc() calling address_space_map() multiple times. Otherwise
we see an error

    qemu: virtio: bogus descriptor or out of resources

Increase the minimum size of the bounce buffer to 0x10000 which matches
the largest value of TARGET_PAGE_SIZE for all architectures.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
v2:
	remove unrelated change
---
 system/physmem.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/system/physmem.c b/system/physmem.c
index e3ebc19eef..3c82da1c86 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -3151,8 +3151,12 @@ void *address_space_map(AddressSpace *as,
             *plen = 0;
             return NULL;
         }
-        /* Avoid unbounded allocations */
-        l = MIN(l, TARGET_PAGE_SIZE);
+        /*
+         * There is only one bounce buffer. The largest occuring value of
+         * parameter sz of virtqueue_map_desc() must fit into the bounce
+         * buffer.
+         */
+        l = MIN(l, 0x10000);
         bounce.buffer = qemu_memalign(TARGET_PAGE_SIZE, l);
         bounce.addr = addr;
         bounce.len = l;
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2024-02-29 14:53 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-28 12:59 [PATCH, v2] physmem: avoid bounce buffer too small Heinrich Schuchardt
2024-02-28 15:06 ` Philippe Mathieu-Daudé
2024-02-28 18:27   ` Heinrich Schuchardt
2024-02-28 18:39     ` Peter Maydell
2024-02-28 19:07       ` Heinrich Schuchardt
2024-02-29  1:11         ` Peter Xu
2024-02-29 10:22           ` Heinrich Schuchardt
2024-02-29 10:36             ` Mattias Nissler
2024-02-29 10:46             ` Jonathan Cameron via
2024-02-29  9:38         ` Peter Maydell
2024-02-29 10:59           ` Jonathan Cameron via
2024-02-29 11:11             ` Peter Maydell
2024-02-29 11:17               ` Heinrich Schuchardt
2024-02-29 12:34                 ` Peter Maydell
2024-02-29 12:52                   ` Mattias Nissler
2024-02-29 13:19                     ` Peter Maydell
2024-02-29 14:17                   ` Heinrich Schuchardt
2024-02-29 14:52                     ` Peter Maydell
2024-02-29 11:18               ` Mattias Nissler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).