From: "Henrik Rydberg" <rydberg@xxxxxxxxxxx> Add struct alignment information and add comments to ensure all access of finger data is two-byte aligned. [akpm@xxxxxxxxxxxxxxxxxxxx: coding-style fixes] Signed-off-by: Henrik Rydberg <rydberg@xxxxxxxxxxx> Cc: Dmitry Torokhov <dtor@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/input/mouse/bcm5974.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff -puN drivers/input/mouse/bcm5974.c~input-bcm5974-declare-alignment-usage drivers/input/mouse/bcm5974.c --- a/drivers/input/mouse/bcm5974.c~input-bcm5974-declare-alignment-usage +++ a/drivers/input/mouse/bcm5974.c @@ -110,17 +110,17 @@ enum tp_type { TYPE2 /* button integrated in trackpad */ }; -/* trackpad finger data offsets */ -#define FINGER_TYPE1 26 -#define FINGER_TYPE2 30 +/* trackpad finger data offsets, le16-aligned */ +#define FINGER_TYPE1 (13 * sizeof(__le16)) +#define FINGER_TYPE2 (15 * sizeof(__le16)) -/* trackpad button data offsets */ +/* trackpad button data offsets, u8-aligned */ #define BUTTON_TYPE2 15 /* integrated button capability by configuration */ #define HAS_INTEGRATED_BUTTON(c) (c->tp_type == TYPE2) -/* trackpad finger structure */ +/* trackpad finger structure, le16-aligned */ struct tp_finger { __le16 origin; /* zero when switching track finger */ __le16 abs_x; /* absolute x coodinate */ @@ -134,7 +134,7 @@ struct tp_finger { __le16 force_minor; /* trackpad force, minor axis? */ __le16 unused[3]; /* zeros */ __le16 multi; /* one finger: varies, more fingers: constant */ -}; +} __attribute__((packed, aligned(2))); /* trackpad finger data size, empirically at least ten fingers */ #define SIZEOF_FINGER sizeof(struct tp_finger) @@ -321,6 +321,7 @@ static int report_tp_state(struct bcm597 if (size < c->tp_offset || (size - c->tp_offset) % SIZEOF_FINGER != 0) return -EIO; + /* finger data, le16-aligned */ f = (const struct tp_finger *)(dev->tp_data + c->tp_offset); raw_n = (size - c->tp_offset) / SIZEOF_FINGER; _ -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html