sunrpc: Use userns friendly constants.
Instead of (uid_t)0 use GLOBAL_ROOT_UID. Instead of (gid_t)0 use GLOBAL_ROOT_GID. Instead of (uid_t)-1 use INVALID_UID Instead of (gid_t)-1 use INVALID_GID. Instead of NOGROUP use INVALID_GID. Cc: "J. Bruce Fields" <bfields@fieldses.org> Cc: Trond Myklebust <Trond.Myklebust@netapp.com> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
ddca4e1730
commit
bf37f79437
@ -519,8 +519,8 @@ rpcauth_bind_root_cred(struct rpc_task *task, int lookupflags)
|
|||||||
{
|
{
|
||||||
struct rpc_auth *auth = task->tk_client->cl_auth;
|
struct rpc_auth *auth = task->tk_client->cl_auth;
|
||||||
struct auth_cred acred = {
|
struct auth_cred acred = {
|
||||||
.uid = 0,
|
.uid = GLOBAL_ROOT_UID,
|
||||||
.gid = 0,
|
.gid = GLOBAL_ROOT_GID,
|
||||||
};
|
};
|
||||||
|
|
||||||
dprintk("RPC: %5u looking up %s cred\n",
|
dprintk("RPC: %5u looking up %s cred\n",
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
# define RPCDBG_FACILITY RPCDBG_AUTH
|
# define RPCDBG_FACILITY RPCDBG_AUTH
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define RPC_MACHINE_CRED_USERID ((uid_t)0)
|
#define RPC_MACHINE_CRED_USERID GLOBAL_ROOT_UID
|
||||||
#define RPC_MACHINE_CRED_GROUPID ((gid_t)0)
|
#define RPC_MACHINE_CRED_GROUPID GLOBAL_ROOT_GID
|
||||||
|
|
||||||
struct generic_cred {
|
struct generic_cred {
|
||||||
struct rpc_cred gc_base;
|
struct rpc_cred gc_base;
|
||||||
|
@ -85,7 +85,7 @@ unx_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags)
|
|||||||
cred->uc_gids[i] = gid;
|
cred->uc_gids[i] = gid;
|
||||||
}
|
}
|
||||||
if (i < NFS_NGROUPS)
|
if (i < NFS_NGROUPS)
|
||||||
cred->uc_gids[i] = NOGROUP;
|
cred->uc_gids[i] = INVALID_GID;
|
||||||
|
|
||||||
return &cred->uc_base;
|
return &cred->uc_base;
|
||||||
}
|
}
|
||||||
@ -137,7 +137,7 @@ unx_match(struct auth_cred *acred, struct rpc_cred *rcred, int flags)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (groups < NFS_NGROUPS &&
|
if (groups < NFS_NGROUPS &&
|
||||||
cred->uc_gids[groups] != NOGROUP)
|
cred->uc_gids[groups] != INVALID_GID)
|
||||||
return 0;
|
return 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -166,7 +166,7 @@ unx_marshal(struct rpc_task *task, __be32 *p)
|
|||||||
*p++ = htonl((u32) cred->uc_uid);
|
*p++ = htonl((u32) cred->uc_uid);
|
||||||
*p++ = htonl((u32) cred->uc_gid);
|
*p++ = htonl((u32) cred->uc_gid);
|
||||||
hold = p++;
|
hold = p++;
|
||||||
for (i = 0; i < 16 && cred->uc_gids[i] != (gid_t) NOGROUP; i++)
|
for (i = 0; i < 16 && cred->uc_gids[i] != INVALID_GID; i++)
|
||||||
*p++ = htonl((u32) cred->uc_gids[i]);
|
*p++ = htonl((u32) cred->uc_gids[i]);
|
||||||
*hold = htonl(p - hold - 1); /* gid array length */
|
*hold = htonl(p - hold - 1); /* gid array length */
|
||||||
*base = htonl((p - base - 1) << 2); /* cred length */
|
*base = htonl((p - base - 1) << 2); /* cred length */
|
||||||
|
@ -750,8 +750,8 @@ svcauth_null_accept(struct svc_rqst *rqstp, __be32 *authp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Signal that mapping to nobody uid/gid is required */
|
/* Signal that mapping to nobody uid/gid is required */
|
||||||
cred->cr_uid = (uid_t) -1;
|
cred->cr_uid = INVALID_UID;
|
||||||
cred->cr_gid = (gid_t) -1;
|
cred->cr_gid = INVALID_GID;
|
||||||
cred->cr_group_info = groups_alloc(0);
|
cred->cr_group_info = groups_alloc(0);
|
||||||
if (cred->cr_group_info == NULL)
|
if (cred->cr_group_info == NULL)
|
||||||
return SVC_CLOSE; /* kmalloc failure - client must retry */
|
return SVC_CLOSE; /* kmalloc failure - client must retry */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user