diff options
author | David Howells <dhowells@redhat.com> | 2012-05-11 05:56:56 -0400 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2012-05-11 05:56:56 -0400 |
commit | 233e4735f2a45d9e641c2488b8d7afeb1f377dac (patch) | |
tree | d273536aaea91cf4817dd305450f327ebb37059f /include/keys | |
parent | 65d87fe68abf2fc226a9e96be61160f65d6b4680 (diff) |
KEYS: Permit in-place link replacement in keyring list
Make use of the previous patch that makes the garbage collector perform RCU
synchronisation before destroying defunct keys. Key pointers can now be
replaced in-place without creating a new keyring payload and replacing the
whole thing as the discarded keys will not be destroyed until all currently
held RCU read locks are released.
If the keyring payload space needs to be expanded or contracted, then a
replacement will still need allocating, and the original will still have to be
freed by RCU.
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'include/keys')
-rw-r--r-- | include/keys/keyring-type.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/keys/keyring-type.h b/include/keys/keyring-type.h index 843f872a4b63..cf49159b0e3a 100644 --- a/include/keys/keyring-type.h +++ b/include/keys/keyring-type.h | |||
@@ -24,7 +24,7 @@ struct keyring_list { | |||
24 | unsigned short maxkeys; /* max keys this list can hold */ | 24 | unsigned short maxkeys; /* max keys this list can hold */ |
25 | unsigned short nkeys; /* number of keys currently held */ | 25 | unsigned short nkeys; /* number of keys currently held */ |
26 | unsigned short delkey; /* key to be unlinked by RCU */ | 26 | unsigned short delkey; /* key to be unlinked by RCU */ |
27 | struct key *keys[0]; | 27 | struct key __rcu *keys[0]; |
28 | }; | 28 | }; |
29 | 29 | ||
30 | 30 | ||