modpost: fix tee MODULE_DEVICE_TABLE built on big-endian host
[ Upstream commit 7f54e00e5842663c2cea501bbbdfa572c94348a3 ]
When MODULE_DEVICE_TABLE(tee, ) is built on a host with a different
endianness from the target architecture, it results in an incorrect
MODULE_ALIAS().
For example, see a case where drivers/char/hw_random/optee-rng.c
is built as a module for ARM little-endian.
If you build it on a little-endian host, you will get the correct
MODULE_ALIAS:
$ grep MODULE_ALIAS drivers/char/hw_random/optee-rng.mod.c
MODULE_ALIAS("tee:ab7a617c-b8e7-4d8f-8301-d09b61036b64*");
However, if you build it on a big-endian host, you will get a wrong
MODULE_ALIAS:
$ grep MODULE_ALIAS drivers/char/hw_random/optee-rng.mod.c
MODULE_ALIAS("tee:646b0361-9bd0-0183-8f4d-e7b87c617aab*");
The same problem also occurs when you enable CONFIG_CPU_BIG_ENDIAN,
and build it on a little-endian host.
This issue has been unnoticed because the ARM kernel is configured for
little-endian by default, and most likely built on a little-endian host
(cross-build on x86 or native-build on ARM).
The uuid field must not be reversed because uuid_t is an array of __u8.
Fixes: 0fc1db9d10
("tee: add bus driver framework for TEE based devices")
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
90ab33735e
commit
b6cffe8dd7
@ -1302,13 +1302,13 @@ static int do_typec_entry(const char *filename, void *symval, char *alias)
|
|||||||
/* Looks like: tee:uuid */
|
/* Looks like: tee:uuid */
|
||||||
static int do_tee_entry(const char *filename, void *symval, char *alias)
|
static int do_tee_entry(const char *filename, void *symval, char *alias)
|
||||||
{
|
{
|
||||||
DEF_FIELD(symval, tee_client_device_id, uuid);
|
DEF_FIELD_ADDR(symval, tee_client_device_id, uuid);
|
||||||
|
|
||||||
sprintf(alias, "tee:%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
|
sprintf(alias, "tee:%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
|
||||||
uuid.b[0], uuid.b[1], uuid.b[2], uuid.b[3], uuid.b[4],
|
uuid->b[0], uuid->b[1], uuid->b[2], uuid->b[3], uuid->b[4],
|
||||||
uuid.b[5], uuid.b[6], uuid.b[7], uuid.b[8], uuid.b[9],
|
uuid->b[5], uuid->b[6], uuid->b[7], uuid->b[8], uuid->b[9],
|
||||||
uuid.b[10], uuid.b[11], uuid.b[12], uuid.b[13], uuid.b[14],
|
uuid->b[10], uuid->b[11], uuid->b[12], uuid->b[13], uuid->b[14],
|
||||||
uuid.b[15]);
|
uuid->b[15]);
|
||||||
|
|
||||||
add_wildcard(alias);
|
add_wildcard(alias);
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user