From ee08dbe37d9db4fe314bd88b9280bf73c92c37bd Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Sat, 8 Aug 2015 16:13:54 -0500 Subject: [PATCH] afs: Make ONEGROUP_ENV not Linux-specific The functionality in AFS_LINUX26_ONEGROUP_ENV does not really need to be Linux-specific (it's just only implemented for Linux right now). Rename it to AFS_PAG_ONEGROUP_ENV, and remove some Linux-specific checks when checking for "onegroup" PAG GIDs. [mmeffie@sinenomine.net: Move AFS_PAG_ONEGROUP_ENV to param.h] Change-Id: I01d29fff309337ae95b9b6c65db3d2212cf4bf89 Reviewed-on: https://gerrit.openafs.org/11978 Reviewed-by: Benjamin Kaduk Tested-by: BuildBot --- src/afs/LINUX/osi_groups.c | 2 +- src/afs/LINUX/osi_machdep.h | 5 ----- src/afs/afs_osi.h | 2 +- src/afs/afs_osi_pag.c | 7 ++++--- src/afs/afs_pioctl.c | 2 +- src/auth/ktc.c | 6 +++--- src/config/param.linux26.h | 5 +++++ src/kopenafs/kopenafs.c | 6 +++--- 8 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/afs/LINUX/osi_groups.c b/src/afs/LINUX/osi_groups.c index ed6ab5ad8..de3671c3a 100644 --- a/src/afs/LINUX/osi_groups.c +++ b/src/afs/LINUX/osi_groups.c @@ -26,7 +26,7 @@ #include "afs/nfsclient.h" #include "osi_compat.h" -#ifdef AFS_LINUX26_ONEGROUP_ENV +#ifdef AFS_PAG_ONEGROUP_ENV static afs_uint32 afs_linux_pag_from_groups(struct group_info *group_info) { diff --git a/src/afs/LINUX/osi_machdep.h b/src/afs/LINUX/osi_machdep.h index 54efc99b6..82aed0083 100644 --- a/src/afs/LINUX/osi_machdep.h +++ b/src/afs/LINUX/osi_machdep.h @@ -15,11 +15,6 @@ #ifndef OSI_MACHDEP_H_ #define OSI_MACHDEP_H_ -#include -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,4) -# define AFS_LINUX26_ONEGROUP_ENV 1 -#endif - /* Only needed for xdr.h in glibc 2.1.x */ #ifndef quad_t # define quad_t __quad_t diff --git a/src/afs/afs_osi.h b/src/afs/afs_osi.h index 3ae2721b2..af1c426be 100644 --- a/src/afs/afs_osi.h +++ b/src/afs/afs_osi.h @@ -448,7 +448,7 @@ extern afs_ucred_t afs_osi_cred, *afs_osi_credp; #define osi_curcred() (u.u_cred) #endif -#ifdef AFS_LINUX26_ONEGROUP_ENV +#ifdef AFS_PAG_ONEGROUP_ENV #define AFS_NUMPAGGROUPS 1 #else #define AFS_NUMPAGGROUPS 2 diff --git a/src/afs/afs_osi_pag.c b/src/afs/afs_osi_pag.c index 2c153c795..354a84436 100644 --- a/src/afs/afs_osi_pag.c +++ b/src/afs/afs_osi_pag.c @@ -383,7 +383,7 @@ afs_setpag_val(int pagval) return (code); } -#ifndef AFS_LINUX26_ONEGROUP_ENV +#ifndef AFS_PAG_ONEGROUP_ENV int afs_getpag_val(void) { @@ -534,7 +534,7 @@ afs_DestroyReq(struct vrequest *av) } } -#ifndef AFS_LINUX26_ONEGROUP_ENV +#ifndef AFS_PAG_ONEGROUP_ENV afs_uint32 afs_get_pag_from_groups(gid_t g0a, gid_t g1a) { @@ -581,7 +581,8 @@ afs_get_groups_from_pag(afs_uint32 pag, gid_t * g0p, gid_t * g1p) *g1p = g1 + 0x3f00; } #else -void afs_get_groups_from_pag(afs_uint32 pag, gid_t *g0p, gid_t *g1p) +void +afs_get_groups_from_pag(afs_uint32 pag, gid_t *g0p, gid_t *g1p) { AFS_STATCNT(afs_get_groups_from_pag); *g0p = pag; diff --git a/src/afs/afs_pioctl.c b/src/afs/afs_pioctl.c index 5b9a8fd08..bc6b3e626 100644 --- a/src/afs/afs_pioctl.c +++ b/src/afs/afs_pioctl.c @@ -4600,7 +4600,7 @@ HandleClientContext(struct afs_ioctl *ablob, int *com, newcred->cr_groupset.gs_union.un_groups[0] = g0; newcred->cr_groupset.gs_union.un_groups[1] = g1; #elif defined(AFS_LINUX26_ENV) -# ifdef AFS_LINUX26_ONEGROUP_ENV +# ifdef AFS_PAG_ONEGROUP_ENV afs_set_cr_group_info(newcred, groups_alloc(1)); /* nothing sets this */ l = (((g0-0x3f00) & 0x3fff) << 14) | ((g1-0x3f00) & 0x3fff); h = ((g0-0x3f00) >> 14); diff --git a/src/auth/ktc.c b/src/auth/ktc.c index 3fb8a61b2..b53479a2e 100644 --- a/src/auth/ktc.c +++ b/src/auth/ktc.c @@ -1060,14 +1060,14 @@ ktc_curpag(void) afs_uint32 g0, g1; afs_uint32 h, l, ret; int ngroups; -#ifdef AFS_LINUX26_ENV +#ifdef AFS_PAG_ONEGROUP_ENV int i; #endif ngroups = getgroups(sizeof groups / sizeof groups[0], groups); -#ifdef AFS_LINUX26_ENV - /* check for AFS_LINUX26_ONEGROUP_ENV PAGs */ +#ifdef AFS_PAG_ONEGROUP_ENV + /* Check for one-group PAGs. */ for (i = 0; i < ngroups; i++) { if (((groups[i] >> 24) & 0xff) == 'A') { return groups[i]; diff --git a/src/config/param.linux26.h b/src/config/param.linux26.h index dc414eae0..37de8d6ea 100644 --- a/src/config/param.linux26.h +++ b/src/config/param.linux26.h @@ -13,6 +13,8 @@ #ifndef UKERNEL /* This section for kernel libafs compiles only */ +#include + #define AFS_LINUX20_ENV 1 #define AFS_LINUX22_ENV 1 #define AFS_LINUX24_ENV 1 @@ -27,6 +29,9 @@ #define AFS_USERSPACE_IP_ADDR 1 #define RXK_LISTENER_ENV 1 #define AFS_GCPAGS 1 /* Set to Userdisabled, allow sysctl to override */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,4) +# define AFS_PAG_ONEGROUP_ENV 1 +#endif #define AFS_HAVE_FFS 1 /* Use system's ffs */ #define AFS_HAVE_STATVFS 0 /* System doesn't support statvfs */ #define AFS_VM_RDWR_ENV 1 /* read/write implemented via VM */ diff --git a/src/kopenafs/kopenafs.c b/src/kopenafs/kopenafs.c index a31833f32..279c264f9 100644 --- a/src/kopenafs/kopenafs.c +++ b/src/kopenafs/kopenafs.c @@ -127,7 +127,7 @@ os_haspag(void) gid_t *groups; afs_uint32 g0, g1; afs_uint32 h, l, pag; -# ifdef AFS_LINUX26_ENV +# ifdef AFS_PAG_ONEGROUP_ENV int i; # endif @@ -137,8 +137,8 @@ os_haspag(void) return 0; ngroups = getgroups(ngroups, groups); - /* Check for AFS_LINUX26_ONEGROUP_ENV PAGs. */ -# ifdef AFS_LINUX26_ENV + /* Check for one-group PAGs. */ +# ifdef AFS_PAG_ONEGROUP_ENV for (i = 0; i < ngroups; i++) if (((groups[i] >> 24) & 0xff) == 'A') { free(groups); -- 2.39.5