Re: PATCH] firewire: add padding to some struct

From: Stefan Richter
Date: Fri Jul 18 2008 - 06:49:55 EST


JiSheng Zhang wrote:
> struct fw_cdev_event_response and struct fw_cdev_event_iso_interrupt need padding.
> Otherwise, offset of the zero length array is not equal to the struct size. It may
> cause some strange problems under some platforms such as sparc32. This
> patch(against 2.6.26) should fix it.

The best solution to this problem would be to use

offsetof(struct fw_cdev_event_XYZ, data)

instead of sizeof(struct fw_cdev_event_XYZ) in all the places where the
offset is required.

Your proposed solution to add padding...

> --- old/include/linux/firewire-cdev.h 2008-07-18 16:34:01.181794046 +0800
> +++ new/include/linux/firewire-cdev.h 2008-07-18 16:35:46.649294275 +0800
> @@ -92,6 +92,7 @@
> __u32 type;
> __u32 rcode;
> __u32 length;
> + __u32 pad;
> __u32 data[0];
> };
>
> @@ -143,6 +144,7 @@
> __u32 type;
> __u32 cycle;
> __u32 header_length;
> + __u32 pad;
> __u32 header[0];
> };
>

...can alas not be applied because it would break ABI compatibility.

Thanks for looking into it,
--
Stefan Richter
-=====-==--- -=== =--=-
http://arcgraph.de/sr/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/