diff options
Diffstat (limited to 'include/linux/key.h')
-rw-r--r-- | include/linux/key.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/include/linux/key.h b/include/linux/key.h index 96933b1e5d24..5231800770e1 100644 --- a/include/linux/key.h +++ b/include/linux/key.h | |||
@@ -124,7 +124,10 @@ static inline unsigned long is_key_possessed(const key_ref_t key_ref) | |||
124 | struct key { | 124 | struct key { |
125 | atomic_t usage; /* number of references */ | 125 | atomic_t usage; /* number of references */ |
126 | key_serial_t serial; /* key serial number */ | 126 | key_serial_t serial; /* key serial number */ |
127 | struct rb_node serial_node; | 127 | union { |
128 | struct list_head graveyard_link; | ||
129 | struct rb_node serial_node; | ||
130 | }; | ||
128 | struct key_type *type; /* type of key */ | 131 | struct key_type *type; /* type of key */ |
129 | struct rw_semaphore sem; /* change vs change sem */ | 132 | struct rw_semaphore sem; /* change vs change sem */ |
130 | struct key_user *user; /* owner of this key */ | 133 | struct key_user *user; /* owner of this key */ |
@@ -133,6 +136,7 @@ struct key { | |||
133 | time_t expiry; /* time at which key expires (or 0) */ | 136 | time_t expiry; /* time at which key expires (or 0) */ |
134 | time_t revoked_at; /* time at which key was revoked */ | 137 | time_t revoked_at; /* time at which key was revoked */ |
135 | }; | 138 | }; |
139 | time_t last_used_at; /* last time used for LRU keyring discard */ | ||
136 | uid_t uid; | 140 | uid_t uid; |
137 | gid_t gid; | 141 | gid_t gid; |
138 | key_perm_t perm; /* access permissions */ | 142 | key_perm_t perm; /* access permissions */ |
@@ -156,6 +160,7 @@ struct key { | |||
156 | #define KEY_FLAG_USER_CONSTRUCT 4 /* set if key is being constructed in userspace */ | 160 | #define KEY_FLAG_USER_CONSTRUCT 4 /* set if key is being constructed in userspace */ |
157 | #define KEY_FLAG_NEGATIVE 5 /* set if key is negative */ | 161 | #define KEY_FLAG_NEGATIVE 5 /* set if key is negative */ |
158 | #define KEY_FLAG_ROOT_CAN_CLEAR 6 /* set if key can be cleared by root without permission */ | 162 | #define KEY_FLAG_ROOT_CAN_CLEAR 6 /* set if key can be cleared by root without permission */ |
163 | #define KEY_FLAG_INVALIDATED 7 /* set if key has been invalidated */ | ||
159 | 164 | ||
160 | /* the description string | 165 | /* the description string |
161 | * - this is used to match a key against search criteria | 166 | * - this is used to match a key against search criteria |
@@ -199,6 +204,7 @@ extern struct key *key_alloc(struct key_type *type, | |||
199 | #define KEY_ALLOC_NOT_IN_QUOTA 0x0002 /* not in quota */ | 204 | #define KEY_ALLOC_NOT_IN_QUOTA 0x0002 /* not in quota */ |
200 | 205 | ||
201 | extern void key_revoke(struct key *key); | 206 | extern void key_revoke(struct key *key); |
207 | extern void key_invalidate(struct key *key); | ||
202 | extern void key_put(struct key *key); | 208 | extern void key_put(struct key *key); |
203 | 209 | ||
204 | static inline struct key *key_get(struct key *key) | 210 | static inline struct key *key_get(struct key *key) |
@@ -236,7 +242,7 @@ extern struct key *request_key_async_with_auxdata(struct key_type *type, | |||
236 | 242 | ||
237 | extern int wait_for_key_construction(struct key *key, bool intr); | 243 | extern int wait_for_key_construction(struct key *key, bool intr); |
238 | 244 | ||
239 | extern int key_validate(struct key *key); | 245 | extern int key_validate(const struct key *key); |
240 | 246 | ||
241 | extern key_ref_t key_create_or_update(key_ref_t keyring, | 247 | extern key_ref_t key_create_or_update(key_ref_t keyring, |
242 | const char *type, | 248 | const char *type, |
@@ -319,6 +325,7 @@ extern void key_init(void); | |||
319 | #define key_serial(k) 0 | 325 | #define key_serial(k) 0 |
320 | #define key_get(k) ({ NULL; }) | 326 | #define key_get(k) ({ NULL; }) |
321 | #define key_revoke(k) do { } while(0) | 327 | #define key_revoke(k) do { } while(0) |
328 | #define key_invalidate(k) do { } while(0) | ||
322 | #define key_put(k) do { } while(0) | 329 | #define key_put(k) do { } while(0) |
323 | #define key_ref_put(k) do { } while(0) | 330 | #define key_ref_put(k) do { } while(0) |
324 | #define make_key_ref(k, p) NULL | 331 | #define make_key_ref(k, p) NULL |