chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bus: implement receiving side of memfd hookup
[elogind.git]
/
src
/
libsystemd-bus
/
bus-message.c
diff --git
a/src/libsystemd-bus/bus-message.c
b/src/libsystemd-bus/bus-message.c
index b5a311530b623114d38d728d5b0c6a6fda16fcc1..209fd71c13ffad7318724f618cb51a10c2d6d3d0 100644
(file)
--- a/
src/libsystemd-bus/bus-message.c
+++ b/
src/libsystemd-bus/bus-message.c
@@
-2196,6
+2196,13
@@
int bus_body_part_map(struct bus_body_part *part) {
if (part->size <= 0)
return 0;
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)
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->memfd < 0)
return;
- if (!part->sealed)
- return;
-
if (!part->data)
return;
if (!part->data)
return;