int err;
 
        err = security_dentry_init_security(dentry, mode, &dentry->d_name,
-                                           &as_ctx->sec_ctx,
+                                           &name, &as_ctx->sec_ctx,
                                            &as_ctx->sec_ctxlen);
        if (err < 0) {
                WARN_ON_ONCE(err != -EOPNOTSUPP);
         * It only supports single security module and only selinux has
         * dentry_init_security hook.
         */
-       name = XATTR_NAME_SELINUX;
        name_len = strlen(name);
        err = ceph_pagelist_reserve(pagelist,
                                    4 * 2 + name_len + as_ctx->sec_ctxlen);
 
                return NULL;
 
        err = security_dentry_init_security(dentry, sattr->ia_mode,
-                               &dentry->d_name, (void **)&label->label, &label->len);
+                               &dentry->d_name, NULL,
+                               (void **)&label->label, &label->len);
        if (err == 0)
                return label;
 
 
 LSM_HOOK(int, 0, move_mount, const struct path *from_path,
         const struct path *to_path)
 LSM_HOOK(int, 0, dentry_init_security, struct dentry *dentry,
-        int mode, const struct qstr *name, void **ctx, u32 *ctxlen)
+        int mode, const struct qstr *name, const char **xattr_name,
+        void **ctx, u32 *ctxlen)
 LSM_HOOK(int, 0, dentry_create_files_as, struct dentry *dentry, int mode,
         struct qstr *name, const struct cred *old, struct cred *new)
 
 
  *     @dentry dentry to use in calculating the context.
  *     @mode mode used to determine resource type.
  *     @name name of the last path component used to create file
+ *     @xattr_name pointer to place the pointer to security xattr name.
+ *                 Caller does not have to free the resulting pointer. Its
+ *                 a pointer to static string.
  *     @ctx pointer to place the pointer to the resulting context in.
  *     @ctxlen point to place the length of the resulting context.
  * @dentry_create_files_as:
 
                                int len, void **mnt_opts);
 int security_move_mount(const struct path *from_path, const struct path *to_path);
 int security_dentry_init_security(struct dentry *dentry, int mode,
-                                       const struct qstr *name, void **ctx,
-                                       u32 *ctxlen);
+                                 const struct qstr *name,
+                                 const char **xattr_name, void **ctx,
+                                 u32 *ctxlen);
 int security_dentry_create_files_as(struct dentry *dentry, int mode,
                                        struct qstr *name,
                                        const struct cred *old,
 static inline int security_dentry_init_security(struct dentry *dentry,
                                                 int mode,
                                                 const struct qstr *name,
+                                                const char **xattr_name,
                                                 void **ctx,
                                                 u32 *ctxlen)
 {
 
 }
 
 int security_dentry_init_security(struct dentry *dentry, int mode,
-                                       const struct qstr *name, void **ctx,
-                                       u32 *ctxlen)
+                                 const struct qstr *name,
+                                 const char **xattr_name, void **ctx,
+                                 u32 *ctxlen)
 {
        return call_int_hook(dentry_init_security, -EOPNOTSUPP, dentry, mode,
-                               name, ctx, ctxlen);
+                               name, xattr_name, ctx, ctxlen);
 }
 EXPORT_SYMBOL(security_dentry_init_security);
 
 
 }
 
 static int selinux_dentry_init_security(struct dentry *dentry, int mode,
-                                       const struct qstr *name, void **ctx,
+                                       const struct qstr *name,
+                                       const char **xattr_name, void **ctx,
                                        u32 *ctxlen)
 {
        u32 newsid;
        if (rc)
                return rc;
 
+       if (xattr_name)
+               *xattr_name = XATTR_NAME_SELINUX;
+
        return security_sid_to_context(&selinux_state, newsid, (char **)ctx,
                                       ctxlen);
 }