summaryrefslogtreecommitdiffstats
path: root/include/linux/key.h
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2019-06-26 21:02:31 +0100
committerDavid Howells <dhowells@redhat.com>2019-06-26 21:02:31 +0100
commitf771fde82051976a6fc0fd570f8b86de4a92124b (patch)
tree9721996d5d081b26f4c8a76fa275c01585030ba3 /include/linux/key.h
parent3b8c4a08a471d56ecaaca939c972fdf5b8255629 (diff)
downloadlinux-f771fde82051976a6fc0fd570f8b86de4a92124b.tar.gz
linux-f771fde82051976a6fc0fd570f8b86de4a92124b.tar.bz2
linux-f771fde82051976a6fc0fd570f8b86de4a92124b.zip
keys: Simplify key description management
Simplify key description management by cramming the word containing the length with the first few chars of the description also. This simplifies the code that generates the index-key used by assoc_array. It should speed up key searching a bit too. Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'include/linux/key.h')
-rw-r--r--include/linux/key.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/include/linux/key.h b/include/linux/key.h
index 4cd5669184f3..86ccc2d010f6 100644
--- a/include/linux/key.h
+++ b/include/linux/key.h
@@ -86,9 +86,20 @@ struct keyring_list;
struct keyring_name;
struct keyring_index_key {
+ union {
+ struct {
+#ifdef __LITTLE_ENDIAN /* Put desc_len at the LSB of x */
+ u8 desc_len;
+ char desc[sizeof(long) - 1]; /* First few chars of description */
+#else
+ char desc[sizeof(long) - 1]; /* First few chars of description */
+ u8 desc_len;
+#endif
+ };
+ unsigned long x;
+ };
struct key_type *type;
const char *description;
- size_t desc_len;
};
union key_payload {
@@ -202,6 +213,7 @@ struct key {
union {
struct keyring_index_key index_key;
struct {
+ unsigned long len_desc;
struct key_type *type; /* type of key */
char *description;
};