Hi,

When using ext4 encryption on SPARC, there's plenty of dmesg noise about
unaligned access:

[  167.269526] Kernel unaligned access at TPC[5497a0] 
find_and_lock_process_key+0x80/0x120
[  167.270152] Kernel unaligned access at TPC[5497a0] 
find_and_lock_process_key+0x80/0x120
[  181.087451] log_unaligned: 5 callbacks suppressed
[  181.087511] Kernel unaligned access at TPC[5497a0] 
find_and_lock_process_key+0x80/0x120
[  181.092435] Kernel unaligned access at TPC[5497a0] 
find_and_lock_process_key+0x80/0x120
[  181.095816] Kernel unaligned access at TPC[5497a0] 
find_and_lock_process_key+0x80/0x120

And also seen on an ARM machine:

$ cat /proc/cpu/alignment
User:           0
System:         1028193 (find_and_lock_process_key+0x84/0x10c)
Skipped:        0
Half:           0
Word:           1028193
DWord:          0
Multi:          0
User faults:    0 (ignored)

Looks like user_key_payload layout is not optimal when data address
is used for fscrypt_key... I tried the below change and got rid of the
messages. Not sure what the proper fix should be?

A.

diff --git a/include/keys/user-type.h b/include/keys/user-type.h
index e098cbe27db5..6495ffcfe510 100644
--- a/include/keys/user-type.h
+++ b/include/keys/user-type.h
@@ -31,7 +31,7 @@
 struct user_key_payload {
        struct rcu_head rcu;            /* RCU destructor */
        unsigned short  datalen;        /* length of this data */
-       char            data[0];        /* actual data */
+       char data[0] __aligned(4);      /* actual data */
 };
 
 extern struct key_type key_type_user;

Reply via email to