struct super_block *sbp;
        struct inode *ip = inode;
        struct smack_known *isp;
+       struct inode_smack *ispp;
+       size_t label_len;
+       char *label = NULL;
 
-       if (strcmp(name, XATTR_SMACK_SUFFIX) == 0)
+       if (strcmp(name, XATTR_SMACK_SUFFIX) == 0) {
                isp = smk_of_inode(inode);
-       else {
+       } else if (strcmp(name, XATTR_SMACK_TRANSMUTE) == 0) {
+               ispp = smack_inode(inode);
+               if (ispp->smk_flags & SMK_INODE_TRANSMUTE)
+                       label = TRANS_TRUE;
+               else
+                       label = "";
+       } else {
                /*
                 * The rest of the Smack xattrs are only on sockets.
                 */
                        return -EOPNOTSUPP;
        }
 
+       if (!label)
+               label = isp->smk_known;
+
+       label_len = strlen(label);
+
        if (alloc) {
-               *buffer = kstrdup(isp->smk_known, GFP_KERNEL);
+               *buffer = kstrdup(label, GFP_KERNEL);
                if (*buffer == NULL)
                        return -ENOMEM;
        }
 
-       return strlen(isp->smk_known);
+       return label_len;
 }