All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] hw/display/tcx: use memmove instead of memcpy for overlapping blit memory regions
@ 2026-09-15 16:20 Николай Зорин
  2026-09-15 16:31 ` Daniel P. Berrangé
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Николай Зорин @ 2026-09-15 16:20 UTC (permalink / raw)
  To: qemu-devel
  Cc: thuth, mst, stefanha, kwolf, marcandre.lureau, mark.cave-ayland

SWSA#34e3af79-c6c2-4ad2-986f-313c1ce28e5a

In `tcx_blit_writel()`, memory copying occurs within the same video RAM
buffers (`vram` and `vram24`) using source and destination offsets that
can potentially overlap during blit operations.

Using `memcpy()` on overlapping memory regions triggers undefined behavior
according to the C standard. Depending on compiler optimizations, this
can lead to graphical artifacts, memory corruption, or unexpected
behavior in the guest system.

Fix this by replacing `memcpy()` with `memmove()`, which explicitly
guarantees safe and correct behavior when memory regions overlap.

Signed-off-by: Nikolay N Zorin <zorin@swemel.ru>
---
  hw/display/tcx.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/display/tcx.c b/hw/display/tcx.c
index 2cfc1e8f..fb48a199 100644
--- a/hw/display/tcx.c
+++ b/hw/display/tcx.c
@@ -587,9 +587,9 @@ static void tcx_blit_writel(void *opaque, hwaddr addr,
                  }
              }
          } else {
-            memcpy(&s->vram[addr], &s->vram[adsr], len);
+            memmove(&s->vram[addr], &s->vram[adsr], len);
              if (s->depth == 24) {
-                memcpy(&s->vram24[addr], &s->vram24[adsr], len * 4);
+                memmove(&s->vram24[addr], &s->vram24[adsr], len * 4);
              }
          }
          tcx_set_dirty(s, addr, len);
-- 
2.43.0



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

end of thread, other threads:[~2026-09-18 13:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-15 16:20 [PATCH] hw/display/tcx: use memmove instead of memcpy for overlapping blit memory regions Николай Зорин
2026-09-15 16:31 ` Daniel P. Berrangé
2026-09-15 16:38   ` Николай Зорин
2026-09-15 16:50 ` Michael S. Tsirkin
2026-09-18 13:14 ` Mark Cave-Ayland

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.