if (!part->sealed)
bus_kernel_push_memfd(m->bus, part->memfd, part->data, part->mapped);
else {
- if (part->size > 0)
- assert_se(munmap(part->data, PAGE_ALIGN(part->size)) == 0);
+ if (part->mapped > 0)
+ assert_se(munmap(part->data, part->mapped) == 0);
close_nointr_nofail(part->memfd);
}
if (m->free_kdbus)
free(m->kdbus);
- if (m->release_kdbus)
- ioctl(m->bus->input_fd, KDBUS_CMD_MSG_RELEASE, m->kdbus);
+ if (m->release_kdbus) {
+ uint64_t off;
+
+ off = (uint8_t *)m->kdbus - (uint8_t *)m->bus->kdbus_buffer;
+ ioctl(m->bus->input_fd, KDBUS_CMD_MSG_RELEASE, &off);
+ }
if (m->bus)
sd_bus_unref(m->bus);
for (c = m->containers; c < m->containers + m->n_containers; c++)
if (c->array_size)
*c->array_size += expand;
-
}
static void *message_extend_body(sd_bus_message *m, size_t align, size_t sz) {
if (!part->data)
return;
- if (!part->munmap_this)
- return;
+ //FIXME: this is not set in the benchmark
+ //if (!part->munmap_this)
+ // return;
assert_se(munmap(part->data, part->mapped) == 0);