Whamcloud - gitweb
LU-974 security: ignore umask if acl enabled
[fs/lustre-release.git] / lustre / mdd / mdd_internal.h
index d6319db..5351615 100644 (file)
@@ -846,7 +846,22 @@ int mdo_create_obj(const struct lu_env *env, struct mdd_object *o,
                    struct thandle *handle)
 {
         struct dt_object *next = mdd_object_child(o);
-        return next->do_ops->do_create(env, next, attr, hint, dof, handle);
+       struct md_ucred *uc = md_ucred(env);
+       __u32 saved;
+       int rc;
+
+       /*
+        *  LU-974 enforce client umask in creation.
+        * TODO: CMD needs to handle this for remote object.
+        */
+        saved = xchg(&current->fs->umask, uc->mu_umask & S_IRWXUGO);
+
+       rc = next->do_ops->do_create(env, next, attr, hint, dof, handle);
+
+       /* restore previous umask value */
+       current->fs->umask = saved;
+
+       return rc;
 }
 
 static inline