diff options
author | Masahiro Yamada <masahiroy@kernel.org> | 2024-11-03 13:46:50 +0100 |
---|---|---|
committer | Masahiro Yamada <masahiroy@kernel.org> | 2024-11-03 14:52:12 +0100 |
commit | 2e766a1f5f94a142d9a906c9411d0f6101c4c721 (patch) | |
tree | c395b481f29701978e0249db6bb87ac9ff1bb156 /drivers/input | |
parent | kconfig: show sub-menu entries even if the prompt is hidden (diff) | |
download | linux-2e766a1f5f94a142d9a906c9411d0f6101c4c721.tar.xz linux-2e766a1f5f94a142d9a906c9411d0f6101c4c721.zip |
modpost: fix acpi MODULE_DEVICE_TABLE built with mismatched endianness
When CONFIG_SATA_AHCI_PLATFORM=m, modpost outputs incorect acpi
MODULE_ALIAS() if the endianness of the target and the build machine
do not match.
When the endianness of the target kernel and the build machine match,
the output is correct:
$ grep 'MODULE_ALIAS("acpi' drivers/ata/ahci_platform.mod.c
MODULE_ALIAS("acpi*:APMC0D33:*");
MODULE_ALIAS("acpi*:010601:*");
However, when building a little-endian kernel on a big-endian machine
(or vice versa), the output is incorrect:
$ grep 'MODULE_ALIAS("acpi' drivers/ata/ahci_platform.mod.c
MODULE_ALIAS("acpi*:APMC0D33:*");
MODULE_ALIAS("acpi*:0601??:*");
The 'cls' and 'cls_msk' fields are 32-bit.
DEF_FIELD() must be used instead of DEF_FIELD_ADDR() to correctly handle
endianness of these 32-bit fields.
The check 'if (cls)' was unnecessary; it never became NULL, as it was
the pointer to 'symval' plus the offset to the 'cls' field.
Fixes: 26095a01d359 ("ACPI / scan: Add support for ACPI _CLS device matching")
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Diffstat (limited to 'drivers/input')
0 files changed, 0 insertions, 0 deletions