[systemd-devel] [PATCH] libsystemd-bus: make sure buf transfered into kenrel is 8 aligned
Lennart Poettering
lennart at poettering.net
Mon Dec 16 06:50:37 PST 2013
On Mon, 16.12.13 16:21, Yin Kangkai (kangkai.yin at linux.intel.com) wrote:
> From: Yin Kangkai <kangkai.yin at intel.com>
>
> Otherwise, for example hello arg passed to KDBUS_CMD_HELLO might not be 8 bytes
> aligned and kernel returns -EFAULT.
>
> 319 int bus_kernel_take_fd(sd_bus *b) {
> 320 struct kdbus_cmd_hello hello;
>
> (gdb) p &hello
> $8 = (struct kdbus_cmd_hello *) 0xbffff354
> ---
> src/libsystemd-bus/bus-control.c | 4 ++--
> src/libsystemd-bus/bus-kernel.c | 2 +-
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> 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?
Lennart
--
Lennart Poettering, Red Hat
More information about the systemd-devel
mailing list