Fix hid_device_id for cross compiling
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
@@ -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."
Quoted 4 lines · On Sun, 26 Oct 2008 00:30:18 +0200 Andreas Schwab <[email protected]> wrote:
struct
hid_device_idcontains 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@@ -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
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_idcontains 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."