diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /include/linux/key.h | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (diff) |
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts:
litmus/sched_cedf.c
Diffstat (limited to 'include/linux/key.h')
-rw-r--r-- | include/linux/key.h | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/include/linux/key.h b/include/linux/key.h index cd50dfa1d4c2..6ea4eebd3467 100644 --- a/include/linux/key.h +++ b/include/linux/key.h | |||
@@ -9,7 +9,7 @@ | |||
9 | * 2 of the License, or (at your option) any later version. | 9 | * 2 of the License, or (at your option) any later version. |
10 | * | 10 | * |
11 | * | 11 | * |
12 | * See Documentation/keys.txt for information on keys/keyrings. | 12 | * See Documentation/security/keys.txt for information on keys/keyrings. |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #ifndef _LINUX_KEY_H | 15 | #ifndef _LINUX_KEY_H |
@@ -170,6 +170,7 @@ struct key { | |||
170 | struct list_head link; | 170 | struct list_head link; |
171 | unsigned long x[2]; | 171 | unsigned long x[2]; |
172 | void *p[2]; | 172 | void *p[2]; |
173 | int reject_error; | ||
173 | } type_data; | 174 | } type_data; |
174 | 175 | ||
175 | /* key data | 176 | /* key data |
@@ -178,8 +179,9 @@ struct key { | |||
178 | */ | 179 | */ |
179 | union { | 180 | union { |
180 | unsigned long value; | 181 | unsigned long value; |
182 | void __rcu *rcudata; | ||
181 | void *data; | 183 | void *data; |
182 | struct keyring_list *subscriptions; | 184 | struct keyring_list __rcu *subscriptions; |
183 | } payload; | 185 | } payload; |
184 | }; | 186 | }; |
185 | 187 | ||
@@ -274,6 +276,23 @@ static inline key_serial_t key_serial(struct key *key) | |||
274 | return key ? key->serial : 0; | 276 | return key ? key->serial : 0; |
275 | } | 277 | } |
276 | 278 | ||
279 | /** | ||
280 | * key_is_instantiated - Determine if a key has been positively instantiated | ||
281 | * @key: The key to check. | ||
282 | * | ||
283 | * Return true if the specified key has been positively instantiated, false | ||
284 | * otherwise. | ||
285 | */ | ||
286 | static inline bool key_is_instantiated(const struct key *key) | ||
287 | { | ||
288 | return test_bit(KEY_FLAG_INSTANTIATED, &key->flags) && | ||
289 | !test_bit(KEY_FLAG_NEGATIVE, &key->flags); | ||
290 | } | ||
291 | |||
292 | #define rcu_dereference_key(KEY) \ | ||
293 | (rcu_dereference_protected((KEY)->payload.rcudata, \ | ||
294 | rwsem_is_locked(&((struct key *)(KEY))->sem))) | ||
295 | |||
277 | #ifdef CONFIG_SYSCTL | 296 | #ifdef CONFIG_SYSCTL |
278 | extern ctl_table key_sysctls[]; | 297 | extern ctl_table key_sysctls[]; |
279 | #endif | 298 | #endif |