]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Linux Keyrings: don't ignore error code from session keyring creation
authorMarc Dionne <marc.c.dionne@gmail.com>
Sat, 23 Jan 2010 01:03:58 +0000 (20:03 -0500)
committerRuss Allbery <rra@debian.org>
Tue, 4 May 2010 21:32:59 +0000 (14:32 -0700)
Creating a session keyring can fail, for instance if the user's
keyring quotas are reached (number of keys/keyrings or data size).

Instead of ignoring errors, return them so they can be passed back
to the caller.

FIXES 126230

Reviewed-on: http://gerrit.openafs.org/1151
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from 0caf14224a9153bb488be9e52d67892a2c441a5a)

Change-Id: Ibffa5ff33f756c9365b1148448039e668d39fb92
Reviewed-on: http://gerrit.openafs.org/1581
Reviewed-by: Alistair Ferguson <alistair.ferguson@mac.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit 0bec77e1f9dfdb7927926953b808603647910cc0)

src/afs/LINUX/osi_groups.c

index c018dd1b46c6a01d5db79277e15ffd9fc89cdfcb..fc82463d89e90a264d6af282a0ef6751240ef202 100644 (file)
@@ -338,9 +338,9 @@ setpag(cred_t **cr, afs_uint32 pagvalue, afs_uint32 *newpag,
 #ifdef LINUX_KEYRING_SUPPORT
     if (code == 0) {
 
-       (void) install_session_keyring(NULL);
+       code = install_session_keyring(NULL);
 
-       if (current_session_keyring()) {
+       if (code == 0 && current_session_keyring()) {
            struct key *key;
            key_perm_t perm;
 
@@ -362,6 +362,8 @@ setpag(cred_t **cr, afs_uint32 pagvalue, afs_uint32 *newpag,
                key_instantiate_and_link(key, (void *) newpag, sizeof(afs_uint32),
                                         current_session_keyring(), NULL);
                key_put(key);
+           } else {
+               code = PTR_ERR(key);
            }
        }
     }