chiark / gitweb /
memfd: map unsealed files as MAP_SHARED
[elogind.git] / src / shared / memfd.c
index 6804b423616bf507b925ccb0676b6c9b608701f8..d94c6268ddf5e376df3ea29956b22b4c1ce8d9b7 100644 (file)
@@ -176,7 +176,11 @@ int sd_memfd_map(sd_memfd *m, uint64_t offset, size_t size, void **p) {
         if (sealed < 0)
                 return sealed;
 
-        q = mmap(NULL, size, sealed ? PROT_READ : PROT_READ|PROT_WRITE, MAP_PRIVATE, m->fd, offset);
+        if (sealed)
+                q = mmap(NULL, size, PROT_READ, MAP_PRIVATE, m->fd, offset);
+        else
+                q = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, m->fd, offset);
+
         if (q == MAP_FAILED)
                 return -errno;