qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] util/memfd: allow allocating 0 bytes
@ 2025-05-06 16:17 Elisha Hollander
  2025-05-06 16:37 ` Daniel P. Berrangé
  0 siblings, 1 reply; 10+ messages in thread
From: Elisha Hollander @ 2025-05-06 16:17 UTC (permalink / raw)
  To: Marc-André Lureau; +Cc: qemu-devel, Elisha Hollander

[-- Attachment #1: Type: text/plain, Size: 994 bytes --]

Sorry for former patch something is messed up with my email.

Signed-off-by: donno2048 <just4now666666@gmail.com>
---
 util/memfd.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/util/memfd.c b/util/memfd.c
index 8a2e906..e96e5af 100644
--- a/util/memfd.c
+++ b/util/memfd.c
@@ -108,7 +108,7 @@ err:
 void *qemu_memfd_alloc(const char *name, size_t size, unsigned int seals,
                        int *fd, Error **errp)
 {
- void *ptr;
+ void *ptr = NULL;
     int mfd = qemu_memfd_create(name, size, false, 0, seals, NULL);

     /* some systems have memfd without sealing */
@@ -131,9 +131,11 @@ void *qemu_memfd_alloc(const char *name, size_t size,
unsigned int seals,
         }
     }

- ptr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, mfd, 0);
- if (ptr == MAP_FAILED) {
- goto err;
+ if (size != 0) {
+ ptr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, mfd, 0);
+ if (ptr == MAP_FAILED) {
+ goto err;
+ }
     }

     *fd = mfd;
--
2.30.2

[-- Attachment #2: Type: text/html, Size: 1935 bytes --]

^ permalink raw reply related	[flat|nested] 10+ messages in thread
* [PATCH v2] util/memfd: allow allocating 0 bytes
@ 2025-05-06 16:44 Elisha Hollander
  2025-05-07 11:58 ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 10+ messages in thread
From: Elisha Hollander @ 2025-05-06 16:44 UTC (permalink / raw)
  To: Marc-André Lureau; +Cc: qemu-devel, Elisha Hollander

[-- Attachment #1: Type: text/plain, Size: 1286 bytes --]

> As I mentioned earlier, let's say you don't initialize the vertical
display end registers, and set the minimum scanline register, the emulation
will then have to allocate some display buffer, but because the vertical
display end is initilized as 0 the buffer will be empty and the program
break.

Signed-off-by: donno2048 <just4now666666@gmail.com>

---
 util/memfd.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/util/memfd.c b/util/memfd.c
index 8a2e906..e96e5af 100644
--- a/util/memfd.c
+++ b/util/memfd.c
@@ -108,7 +108,7 @@ err:
 void *qemu_memfd_alloc(const char *name, size_t size, unsigned int seals,
                        int *fd, Error **errp)
 {
-    void *ptr;
+    void *ptr = NULL;
     int mfd = qemu_memfd_create(name, size, false, 0, seals, NULL);

     /* some systems have memfd without sealing */
@@ -131,9 +131,11 @@ void *qemu_memfd_alloc(const char *name, size_t size,
unsigned int seals,
         }
     }

-    ptr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, mfd, 0);
-    if (ptr == MAP_FAILED) {
-        goto err;
+    if (size != 0) {
+        ptr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, mfd, 0);
+        if (ptr == MAP_FAILED) {
+            goto err;
+        }
     }

     *fd = mfd;
--
2.30.2

[-- Attachment #2: Type: text/html, Size: 2318 bytes --]

^ permalink raw reply related	[flat|nested] 10+ messages in thread
* [PATCH v2] util/memfd: allow allocating 0 bytes
@ 2025-05-06 16:10 Elisha Hollander
  0 siblings, 0 replies; 10+ messages in thread
From: Elisha Hollander @ 2025-05-06 16:10 UTC (permalink / raw)
  To: Marc-André Lureau; +Cc: qemu-devel, Elisha Hollander

[-- Attachment #1: Type: text/plain, Size: 932 bytes --]

Signed-off-by: donno2048 <just4now666666@gmail.com>
---
 util/memfd.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/util/memfd.c b/util/memfd.c
index 8a2e906..e96e5af 100644
--- a/util/memfd.c
+++ b/util/memfd.c @@ -108,7 +108,7 @@ err:
 void *qemu_memfd_alloc(const char *name, size_t size, unsigned int seals,
                        int *fd, Error **errp)
 { - void *ptr;
+ void *ptr = NULL;
     int mfd = qemu_memfd_create(name, size, false, 0, seals, NULL);

     /* some systems have memfd without sealing */
@@ -131,9 +131,11 @@ void *qemu_memfd_alloc(const char *name, size_t size,
unsigned int seals,
         }
     }

- ptr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, mfd, 0);
- if (ptr == MAP_FAILED) { - goto err;
+ if (size != 0) {
+ ptr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, mfd, 0); + if
(ptr == MAP_FAILED) {
+ goto err;
+ }
     }

     *fd = mfd;
--
2.30.2

[-- Attachment #2: Type: text/html, Size: 2065 bytes --]

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

end of thread, other threads:[~2025-05-07 15:52 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-06 16:17 [PATCH v2] util/memfd: allow allocating 0 bytes Elisha Hollander
2025-05-06 16:37 ` Daniel P. Berrangé
2025-05-06 16:41   ` Elisha Hollander
2025-05-06 16:48     ` Daniel P. Berrangé
2025-05-06 22:25       ` Elisha Hollander
2025-05-07 11:36         ` Daniel P. Berrangé
  -- strict thread matches above, loose matches on Subject: below --
2025-05-06 16:44 Elisha Hollander
2025-05-07 11:58 ` Philippe Mathieu-Daudé
2025-05-07 15:51   ` Elisha Hollander
2025-05-06 16:10 Elisha Hollander

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).