chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
logind: implement generic multi-session
[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 55c2d6288542e903205b38cfaa7999c9b7b22bf8..760a148fadd8f473f110d0a06589d8cdb4255cea 100644
(file)
--- a/
src/libsystemd-bus/bus-message.c
+++ b/
src/libsystemd-bus/bus-message.c
@@
-65,8
+65,8
@@
static void message_free_part(sd_bus_message *m, struct bus_body_part *part) {
if (!part->sealed)
bus_kernel_push_memfd(m->bus, part->memfd, part->data, part->mapped);
else {
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);
}
close_nointr_nofail(part->memfd);
}
@@
-125,8
+125,12
@@
static void message_free(sd_bus_message *m) {
if (m->free_kdbus)
free(m->kdbus);
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);
if (m->bus)
sd_bus_unref(m->bus);
@@
-1212,8
+1216,9
@@
static int part_make_space(
part->mapped = psz;
part->data = n;
part->mapped = psz;
part->data = n;
- part->munmap_this = true;
}
}
+
+ part->munmap_this = true;
} else {
n = realloc(part->data, sz);
if (!n) {
} else {
n = realloc(part->data, sz);
if (!n) {
@@
-1244,7
+1249,6
@@
static void message_extend_containers(sd_bus_message *m, size_t expand) {
for (c = m->containers; c < m->containers + m->n_containers; c++)
if (c->array_size)
*c->array_size += expand;
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) {
}
static void *message_extend_body(sd_bus_message *m, size_t align, size_t sz) {