Skip to contentSkip to conversation

Fix hid_device_id for cross compiling

PATCH In review Andreas Schwab 2 participants 3 messages Oct 25, 2008 – Oct 30, 2008 HID

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fix hid_device_id for cross compiling

struct hid_device_id contains hidden padding which is bad for cross compiling. Make the padding explicit and consistent across architectures.

---

include/linux/mod_devicetable.h +1 -0
index eb71b45..0e4f303 100644
@@ -135,6 +135,7 @@ struct usb_device_id {
 
 struct hid_device_id {
 	__u16 bus;
+	__u16 pad1;
 	__u32 vendor;
 	__u32 product;
 	kernel_ulong_t driver_data
Signature · 4 lines
Andreas Schwab, SuSE Labs, [email protected]
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
#1 lore raw
Quoted 4 lines · On Sun, 26 Oct 2008 00:30:18 +0200 Andreas Schwab <[email protected]> wrote:

struct hid_device_id contains hidden padding which is bad for cross compiling. Make the padding explicit and consistent across architectures.

What is "bad" about it? Can you expand a bit on the problem which is being fixed here? Before-and-after user-visible behaviour?

Thanks.

Quoted 13 lines

---

include/linux/mod_devicetable.h +1 -0
index eb71b45..0e4f303 100644
@@ -135,6 +135,7 @@ struct usb_device_id {
 
 struct hid_device_id {
 	__u16 bus;
+	__u16 pad1;
 	__u32 vendor;
 	__u32 product;
 	kernel_ulong_t driver_data
#2 lore raw
Quoted 8 lines · Andrew Morton
Quoted 4 lines · On Sun, 26 Oct 2008 00:30:18 +0200 Andreas Schwab <[email protected]> wrote:

struct hid_device_id contains hidden padding which is bad for cross compiling. Make the padding explicit and consistent across architectures.

What is "bad" about it?

It is bad because it depends on the alignment restrictions of the architecture. On m68k everything is aligned on a 2-byte boundary, so this padding does not exist.

Quoted 1 line

Can you expand a bit on the problem which is being fixed here?

It's the well known cross compiling problem with modpost that has bitten us so often before. This one is even worse, because modpost would silently read bogus values since the struct size is the same, only the padding moves elsewhere.

Andreas.

Signature · 4 lines
Andreas Schwab, SuSE Labs, [email protected]
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."