The changes in
7b272177de4c6f78db7f2315f4e30e85ab7660bb sadly break
all platforms which aren't Linux. This is because the logic in PagInCred
doesn't handle the non-Linux case at all. Fix this so that we call
afs_get_group_pag whenever we're not running on Linux.
The code also doesn't match the comment - Linux kernels which don't
have keyrings should use afs_get_group_pag(), regardless of whether
STRUCT_TASK_HAS_CRED. It's unlikely this bit would ever bite anyone
though, kernels with cred support almost certainly require keyrings.
Change-Id: I5373da51151229dc13b6dc60c3cf10700f0f881a
Reviewed-on: http://gerrit.openafs.org/1006
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
if (cred == NULL || cred == afs_osi_credp) {
return NOPAG;
}
+#if defined(AFS_LINUX26_ENV) && defined(LINUX_KEYRING_SUPPORT)
/*
* If linux keyrings are in use and we carry the session keyring in our credentials
* structure, they should be the only criteria for determining
* With keyrings but no kernel credentials, look at groups first and fall back
* to looking at the keyrings.
*/
-#if defined(AFS_LINUX26_ENV) && !defined(STRUCT_TASK_HAS_CRED)
+# if !defined(STRUCT_TASK_HAS_CRED)
pag = afs_get_group_pag(cred);
-#endif
-#if defined(AFS_LINUX26_ENV) && defined(LINUX_KEYRING_SUPPORT)
+# endif
if (pag == NOPAG)
- pag = osi_get_keyring_pag(cred);
+ pag = osi_get_keyring_pag(cred);
+#else
+ pag = afs_get_group_pag(cred);
#endif
return pag;
}