diff options
Diffstat (limited to 'security/keys/keyring.c')
-rw-r--r-- | security/keys/keyring.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/security/keys/keyring.c b/security/keys/keyring.c index fdf75f901991..ed851574d073 100644 --- a/security/keys/keyring.c +++ b/security/keys/keyring.c | |||
@@ -245,14 +245,14 @@ static long keyring_read(const struct key *keyring, | |||
245 | * allocate a keyring and link into the destination keyring | 245 | * allocate a keyring and link into the destination keyring |
246 | */ | 246 | */ |
247 | struct key *keyring_alloc(const char *description, uid_t uid, gid_t gid, | 247 | struct key *keyring_alloc(const char *description, uid_t uid, gid_t gid, |
248 | struct task_struct *ctx, unsigned long flags, | 248 | const struct cred *cred, unsigned long flags, |
249 | struct key *dest) | 249 | struct key *dest) |
250 | { | 250 | { |
251 | struct key *keyring; | 251 | struct key *keyring; |
252 | int ret; | 252 | int ret; |
253 | 253 | ||
254 | keyring = key_alloc(&key_type_keyring, description, | 254 | keyring = key_alloc(&key_type_keyring, description, |
255 | uid, gid, ctx, | 255 | uid, gid, cred, |
256 | (KEY_POS_ALL & ~KEY_POS_SETATTR) | KEY_USR_ALL, | 256 | (KEY_POS_ALL & ~KEY_POS_SETATTR) | KEY_USR_ALL, |
257 | flags); | 257 | flags); |
258 | 258 | ||
@@ -281,7 +281,7 @@ struct key *keyring_alloc(const char *description, uid_t uid, gid_t gid, | |||
281 | * - we propagate the possession attribute from the keyring ref to the key ref | 281 | * - we propagate the possession attribute from the keyring ref to the key ref |
282 | */ | 282 | */ |
283 | key_ref_t keyring_search_aux(key_ref_t keyring_ref, | 283 | key_ref_t keyring_search_aux(key_ref_t keyring_ref, |
284 | struct task_struct *context, | 284 | const struct cred *cred, |
285 | struct key_type *type, | 285 | struct key_type *type, |
286 | const void *description, | 286 | const void *description, |
287 | key_match_func_t match) | 287 | key_match_func_t match) |
@@ -304,7 +304,7 @@ key_ref_t keyring_search_aux(key_ref_t keyring_ref, | |||
304 | key_check(keyring); | 304 | key_check(keyring); |
305 | 305 | ||
306 | /* top keyring must have search permission to begin the search */ | 306 | /* top keyring must have search permission to begin the search */ |
307 | err = key_task_permission(keyring_ref, context, KEY_SEARCH); | 307 | err = key_task_permission(keyring_ref, cred, KEY_SEARCH); |
308 | if (err < 0) { | 308 | if (err < 0) { |
309 | key_ref = ERR_PTR(err); | 309 | key_ref = ERR_PTR(err); |
310 | goto error; | 310 | goto error; |
@@ -377,7 +377,7 @@ descend: | |||
377 | 377 | ||
378 | /* key must have search permissions */ | 378 | /* key must have search permissions */ |
379 | if (key_task_permission(make_key_ref(key, possessed), | 379 | if (key_task_permission(make_key_ref(key, possessed), |
380 | context, KEY_SEARCH) < 0) | 380 | cred, KEY_SEARCH) < 0) |
381 | continue; | 381 | continue; |
382 | 382 | ||
383 | /* we set a different error code if we pass a negative key */ | 383 | /* we set a different error code if we pass a negative key */ |
@@ -404,7 +404,7 @@ ascend: | |||
404 | continue; | 404 | continue; |
405 | 405 | ||
406 | if (key_task_permission(make_key_ref(key, possessed), | 406 | if (key_task_permission(make_key_ref(key, possessed), |
407 | context, KEY_SEARCH) < 0) | 407 | cred, KEY_SEARCH) < 0) |
408 | continue; | 408 | continue; |
409 | 409 | ||
410 | /* stack the current position */ | 410 | /* stack the current position */ |
@@ -459,7 +459,7 @@ key_ref_t keyring_search(key_ref_t keyring, | |||
459 | if (!type->match) | 459 | if (!type->match) |
460 | return ERR_PTR(-ENOKEY); | 460 | return ERR_PTR(-ENOKEY); |
461 | 461 | ||
462 | return keyring_search_aux(keyring, current, | 462 | return keyring_search_aux(keyring, current->cred, |
463 | type, description, type->match); | 463 | type, description, type->match); |
464 | 464 | ||
465 | } /* end keyring_search() */ | 465 | } /* end keyring_search() */ |