chiark / gitweb /
bus: implement receiving side of memfd hookup
[elogind.git] / src / libsystemd-bus / bus-message.c
index b5a311530b623114d38d728d5b0c6a6fda16fcc1..209fd71c13ffad7318724f618cb51a10c2d6d3d0 100644 (file)
@@ -2196,6 +2196,13 @@ int bus_body_part_map(struct bus_body_part *part) {
         if (part->size <= 0)
                 return 0;
 
+        /* For smaller zero parts (as used for padding) we don't need to map anything... */
+        if (part->memfd < 0 && part->is_zero && part->size < 8) {
+                static const uint8_t zeroes[7] = { };
+                part->data = (void*) zeroes;
+                return 0;
+        }
+
         psz = PAGE_ALIGN(part->size);
 
         if (part->memfd >= 0)
@@ -2222,9 +2229,6 @@ void bus_body_part_unmap(struct bus_body_part *part) {
         if (part->memfd < 0)
                 return;
 
-        if (!part->sealed)
-                return;
-
         if (!part->data)
                 return;