/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2012, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
struct lu_attr *la, int mask)
{
#ifdef CONFIG_FS_POSIX_ACL
- struct md_ucred *uc = md_ucred(env);
+ struct lu_ucred *uc = lu_ucred_assert(env);
posix_acl_xattr_header *head;
posix_acl_xattr_entry *entry;
struct lu_buf *buf;
int __mdd_permission_internal(const struct lu_env *env, struct mdd_object *obj,
struct lu_attr *la, int mask, int role)
{
- struct md_ucred *uc = md_ucred(env);
+ struct lu_ucred *uc = lu_ucred(env);
__u32 mode;
int rc;
ENTRY;
if (mask == 0)
RETURN(0);
- /* These means unnecessary for permission check */
- if ((uc == NULL) || (uc->mu_valid == UCRED_INIT))
- RETURN(0);
+ /* These means unnecessary for permission check */
+ if ((uc == NULL) || (uc->uc_valid == UCRED_INIT))
+ RETURN(0);
- /* Invalid user credit */
- if (uc->mu_valid == UCRED_INVALID)
- RETURN(-EACCES);
+ /* Invalid user credit */
+ if (uc->uc_valid == UCRED_INVALID)
+ RETURN(-EACCES);
/*
* Nobody gets write access to an immutable file.
}
mode = la->la_mode;
- if (uc->mu_fsuid == la->la_uid) {
- mode >>= 6;
+ if (uc->uc_fsuid == la->la_uid) {
+ mode >>= 6;
} else {
if (mode & S_IRWXG) {
if (role != -1)
RETURN(0);
check_capabilities:
- if (!(mask & MAY_EXEC) ||
- (la->la_mode & S_IXUGO) || S_ISDIR(la->la_mode))
- if (mdd_capable(uc, CFS_CAP_DAC_OVERRIDE))
- RETURN(0);
+ if (!(mask & MAY_EXEC) ||
+ (la->la_mode & S_IXUGO) || S_ISDIR(la->la_mode))
+ if (md_capable(uc, CFS_CAP_DAC_OVERRIDE))
+ RETURN(0);
- if ((mask == MAY_READ) ||
- (S_ISDIR(la->la_mode) && !(mask & MAY_WRITE)))
- if (mdd_capable(uc, CFS_CAP_DAC_READ_SEARCH))
- RETURN(0);
+ if ((mask == MAY_READ) ||
+ (S_ISDIR(la->la_mode) && !(mask & MAY_WRITE)))
+ if (md_capable(uc, CFS_CAP_DAC_READ_SEARCH))
+ RETURN(0);
- RETURN(-EACCES);
+ RETURN(-EACCES);
}
int mdd_permission(const struct lu_env *env,
struct md_attr *ma, int mask)
{
struct mdd_object *mdd_pobj, *mdd_cobj;
- struct md_ucred *uc = NULL;
+ struct lu_ucred *uc = NULL;
struct lu_attr *la = &mdd_env_info(env)->mti_cattr;
int check_create, check_link;
int check_unlink;
}
if (!rc && (check_vtx_part || check_vtx_full)) {
- uc = md_ucred(env);
+ uc = lu_ucred_assert(env);
if (likely(!la)) {
la = &mdd_env_info(env)->mti_la;
rc = mdd_la_get(env, mdd_cobj, la, BYPASS_CAPA);
RETURN(rc);
}
- if (!(la->la_mode & S_ISVTX) || (la->la_uid == uc->mu_fsuid) ||
- (check_vtx_full && (ma->ma_attr.la_valid & LA_UID) &&
- (ma->ma_attr.la_uid == uc->mu_fsuid))) {
- ma->ma_attr_flags |= MDS_VTX_BYPASS;
+ if (!(la->la_mode & S_ISVTX) || (la->la_uid == uc->uc_fsuid) ||
+ (check_vtx_full && (ma->ma_attr.la_valid & LA_UID) &&
+ (ma->ma_attr.la_uid == uc->uc_fsuid))) {
+ ma->ma_attr_flags |= MDS_VTX_BYPASS;
} else {
ma->ma_attr_flags &= ~MDS_VTX_BYPASS;
if (check_vtx_full)
if (unlikely(!rc && check_rgetfacl)) {
if (likely(!uc))
- uc = md_ucred(env);
+ uc = lu_ucred_assert(env);
- if (la->la_uid != uc->mu_fsuid &&
- !mdd_capable(uc, CFS_CAP_FOWNER))
- rc = -EPERM;
+ if (la->la_uid != uc->uc_fsuid &&
+ !md_capable(uc, CFS_CAP_FOWNER))
+ rc = -EPERM;
}
RETURN(rc);