From: Daniel Mack Date: Fri, 5 Dec 2014 09:03:00 +0000 (+0100) Subject: sd-bus: follow kdbus changes (ABI break) X-Git-Tag: v218~94 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=840ceb897ff2b44275dcf2fe8227a750941789f0;hp=baade8cc237c37bd8905d86ec6e9c7872d4abe03 sd-bus: follow kdbus changes (ABI break) Implement a recent change in the kdbus pool logic: PAYLOAD_VEC_OFF items are now referencing offsets relative to the connection's pool, not to the item itself. Follow this change in sd-bus. --- diff --git a/src/libsystemd/sd-bus/bus-kernel.c b/src/libsystemd/sd-bus/bus-kernel.c index d81e9d254..3a809e4aa 100644 --- a/src/libsystemd/sd-bus/bus-kernel.c +++ b/src/libsystemd/sd-bus/bus-kernel.c @@ -422,7 +422,7 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) { case KDBUS_ITEM_PAYLOAD_OFF: if (!h) { - h = (struct bus_header *)((uint8_t *)k + d->vec.offset); + h = (struct bus_header *)((uint8_t *)bus->kdbus_buffer + d->vec.offset); if (!bus_header_is_complete(h, d->vec.size)) return -EBADMSG; @@ -514,11 +514,11 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) { if (idx >= begin_body) { if (!part->is_zero) - part->data = (uint8_t *)k + d->vec.offset; + part->data = (uint8_t *)bus->kdbus_buffer + d->vec.offset; part->size = d->vec.size; } else { if (!part->is_zero) - part->data = (uint8_t *)k + d->vec.offset + (begin_body - idx); + part->data = (uint8_t *)bus->kdbus_buffer + d->vec.offset + (begin_body - idx); part->size = d->vec.size - (begin_body - idx); }