mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 06:01:23 +00:00
KEYS: Merge the type-specific data with the payload data
Merge the type-specific data with the payload data into one four-word chunk as it seems pointless to keep them separate. Use user_key_payload() for accessing the payloads of overloaded user-defined keys. Signed-off-by: David Howells <dhowells@redhat.com> cc: linux-cifs@vger.kernel.org cc: ecryptfs@vger.kernel.org cc: linux-ext4@vger.kernel.org cc: linux-f2fs-devel@lists.sourceforge.net cc: linux-nfs@vger.kernel.org cc: ceph-devel@vger.kernel.org cc: linux-ima-devel@lists.sourceforge.net
This commit is contained in:
parent
4adc605edc
commit
146aa8b145
49 changed files with 286 additions and 230 deletions
|
@ -89,6 +89,11 @@ struct keyring_index_key {
|
|||
size_t desc_len;
|
||||
};
|
||||
|
||||
union key_payload {
|
||||
void __rcu *rcu_data0;
|
||||
void *data[4];
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
* key reference with possession attribute handling
|
||||
|
@ -186,28 +191,18 @@ struct key {
|
|||
};
|
||||
};
|
||||
|
||||
/* type specific data
|
||||
* - this is used by the keyring type to index the name
|
||||
*/
|
||||
union {
|
||||
struct list_head link;
|
||||
unsigned long x[2];
|
||||
void *p[2];
|
||||
int reject_error;
|
||||
} type_data;
|
||||
|
||||
/* key data
|
||||
* - this is used to hold the data actually used in cryptography or
|
||||
* whatever
|
||||
*/
|
||||
union {
|
||||
union {
|
||||
unsigned long value;
|
||||
void __rcu *rcudata;
|
||||
void *data;
|
||||
void *data2[2];
|
||||
} payload;
|
||||
struct assoc_array keys;
|
||||
union key_payload payload;
|
||||
struct {
|
||||
/* Keyring bits */
|
||||
struct list_head name_link;
|
||||
struct assoc_array keys;
|
||||
};
|
||||
int reject_error;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -336,12 +331,12 @@ static inline bool key_is_instantiated(const struct key *key)
|
|||
}
|
||||
|
||||
#define rcu_dereference_key(KEY) \
|
||||
(rcu_dereference_protected((KEY)->payload.rcudata, \
|
||||
(rcu_dereference_protected((KEY)->payload.rcu_data0, \
|
||||
rwsem_is_locked(&((struct key *)(KEY))->sem)))
|
||||
|
||||
#define rcu_assign_keypointer(KEY, PAYLOAD) \
|
||||
do { \
|
||||
rcu_assign_pointer((KEY)->payload.rcudata, (PAYLOAD)); \
|
||||
rcu_assign_pointer((KEY)->payload.rcu_data0, (PAYLOAD)); \
|
||||
} while (0)
|
||||
|
||||
#ifdef CONFIG_SYSCTL
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue