.permission = cifs_permission,
        .listxattr = cifs_listxattr,
        .fiemap = cifs_fiemap,
+       .get_acl = cifs_get_acl,
+       .set_acl = cifs_set_acl,
  };
  
 +const char *cifs_get_link(struct dentry *dentry, struct inode *inode,
 +                          struct delayed_call *done)
 +{
 +      char *target_path;
 +
 +      target_path = kmalloc(PATH_MAX, GFP_KERNEL);
 +      if (!target_path)
 +              return ERR_PTR(-ENOMEM);
 +
 +      spin_lock(&inode->i_lock);
 +      if (likely(CIFS_I(inode)->symlink_target)) {
 +              strscpy(target_path, CIFS_I(inode)->symlink_target, PATH_MAX);
 +      } else {
 +              kfree(target_path);
 +              target_path = ERR_PTR(-EOPNOTSUPP);
 +      }
 +      spin_unlock(&inode->i_lock);
 +
 +      if (!IS_ERR(target_path))
 +              set_delayed_call(done, kfree_link, target_path);
 +
 +      return target_path;
 +}
 +
  const struct inode_operations cifs_symlink_inode_ops = {
 -      .get_link = simple_get_link,
 +      .get_link = cifs_get_link,
        .permission = cifs_permission,
        .listxattr = cifs_listxattr,
  };