On Mon, Dec 16, 2013 at 4:09 PM, Kay Sievers <k...@vrfy.org> wrote: > On Mon, Dec 16, 2013 at 4:01 PM, Lennart Poettering > <lenn...@poettering.net> wrote: >> On Mon, 16.12.13 15:50, Lennart Poettering (lenn...@poettering.net) wrote: >> >>> > diff --git a/src/libsystemd-bus/bus-control.c >>> > b/src/libsystemd-bus/bus-control.c >>> > index 0072c37..6b2790d 100644 >>> > --- a/src/libsystemd-bus/bus-control.c >>> > +++ b/src/libsystemd-bus/bus-control.c >>> > @@ -207,7 +207,7 @@ _public_ int sd_bus_release_name(sd_bus *bus, const >>> > char *name) { >>> > } >>> > >>> > static int kernel_get_list(sd_bus *bus, uint64_t flags, char ***x) { >>> > - struct kdbus_cmd_name_list cmd = {}; >>> > + struct kdbus_cmd_name_list __attribute__ ((__aligned__(8))) >>> > cmd = {}; >>> >>> Hmm, this feels a bit like this would be better part of the type rather >>> than the variable. THus, kdbus.h should add this to all is structs, >>> rather then we decorate the variables... >>> >>> Kay, would this make sense to you to add to kdbus.h? >> >> Hmm, so thinking about this: the kdbus_cmd_name_list structure contains >> 64bit values anyway, so should naturally be aligned to 64bit boundaries >> anyway... Or am I mistaken there and you are suggesting that on your >> 32bit architecture (which one is it if I may ask?) 64bit values don't >> have to be aligned on an even 8byte boundary, but instead because the >> arch is 32bit anyway and thus 64bit values need to be read in two steps >> alignment on 4 is done in the abi? > > We could try to define "size", which is the first member in the struct, as: > __aligned_u64 > instead of the current: > u64 > > That might do the trick. Could you test that if it works on your > platform/setup instead of patching the lib?
Just added __attribute__ ((__aligned__(8))) to kdbus.h for structures used in ioctls. Kay _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel