Skip to content

Commit

Permalink
KEYS: user: Align the payload buffer
Browse files Browse the repository at this point in the history
Align the payload of "user" and "logon" keys so that users of the
keyrings service can access it as a struct that requires more than
2-byte alignment.  fscrypt currently does this which results in the read
of fscrypt_key::size being misaligned as it needs 4-byte alignment.

Align to __alignof__(u64) rather than __alignof__(long) since in the
future it's conceivable that people would use structs beginning with
u64, which on some platforms would require more than 'long' alignment.

Reported-by: Aaro Koskinen <[email protected]>
Fixes: 2aa349f ("[PATCH] Keys: Export user-defined keyring operations")
Fixes: 88bd6cc ("ext4 crypto: add encryption key management facilities")
Cc: [email protected]
Signed-off-by: Eric Biggers <[email protected]>
Tested-by: Aaro Koskinen <[email protected]>
Signed-off-by: David Howells <[email protected]>
Signed-off-by: James Morris <[email protected]>
  • Loading branch information
ebiggers authored and James Morris committed Feb 22, 2019
1 parent 8a61716 commit cc1780f
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion include/keys/user-type.h
Original file line number Diff line number Diff line change
Expand Up @@ -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(__alignof__(u64)); /* actual data */
};

extern struct key_type key_type_user;
Expand Down

0 comments on commit cc1780f

Please sign in to comment.