ssize_t list_size, size, value_size = 0;
        char *buf, *name, *value = NULL;
        int uninitialized_var(error);
+       size_t slen;
  
 -      if (!old->d_inode->i_op->getxattr ||
 -          !new->d_inode->i_op->getxattr)
 +      if (!(old->d_inode->i_opflags & IOP_XATTR) ||
 +          !(new->d_inode->i_opflags & IOP_XATTR))
                return 0;
  
        list_size = vfs_listxattr(old, NULL, 0);
 
  static const struct inode_operations ovl_symlink_inode_operations = {
        .setattr        = ovl_setattr,
        .get_link       = ovl_get_link,
-       .readlink       = ovl_readlink,
+       .readlink       = generic_readlink,
        .getattr        = ovl_getattr,
 -      .setxattr       = generic_setxattr,
 -      .getxattr       = generic_getxattr,
        .listxattr      = ovl_listxattr,
 -      .removexattr    = generic_removexattr,
        .update_time    = ovl_update_time,
  };