big_keys: Use struct for internal payload
authorKees Cook <keescook@chromium.org>
Sun, 8 May 2022 16:15:53 +0000 (09:15 -0700)
committerKees Cook <keescook@chromium.org>
Mon, 16 May 2022 23:02:21 +0000 (16:02 -0700)
commitc1298a3a1139c9a73a188fbb153b6eb83dbd4d7d
treef52517bf328f19902d5550083a67379b7691ae98
parent61f60bac8c05f8ecd2ae2a6360520b91a45be9a2
big_keys: Use struct for internal payload

The randstruct GCC plugin gets upset when it sees struct path (which is
randomized) being assigned from a "void *" (which it cannot type-check).

There's no need for these casts, as the entire internal payload use is
following a normal struct layout. Convert the enum-based void * offset
dereferencing to the new big_key_payload struct. No meaningful machine
code changes result after this change, and source readability is improved.

Drop the randstruct exception now that there is no "confusing" cross-type
assignment.

Cc: David Howells <dhowells@redhat.com>
Cc: Eric Biggers <ebiggers@kernel.org>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Jarkko Sakkinen <jarkko@kernel.org>
Cc: James Morris <jmorris@namei.org>
Cc: "Serge E. Hallyn" <serge@hallyn.com>
Cc: linux-hardening@vger.kernel.org
Cc: keyrings@vger.kernel.org
Cc: linux-security-module@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
scripts/gcc-plugins/randomize_layout_plugin.c
security/keys/big_key.c