aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/dir.c
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2005-09-02 13:05:06 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2005-09-02 13:05:06 +0000
commit564878188251c3f66c0a297dcad7d6c095ac2efd (patch)
tree3ee0671cf6300e46b3de3613092d7199b7fe9ec6 /kernel/dir.c
parentecce1bf2ff73eb37048a784df0fa97ad041c6bdd (diff)
downloadlibfuse-564878188251c3f66c0a297dcad7d6c095ac2efd.tar.gz
fix
Diffstat (limited to 'kernel/dir.c')
-rw-r--r--kernel/dir.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/kernel/dir.c b/kernel/dir.c
index f2fe170..f1baf78 100644
--- a/kernel/dir.c
+++ b/kernel/dir.c
@@ -552,9 +552,7 @@ static int fuse_permission(struct inode *inode, int mask, struct nameidata *nd)
return -EACCES;
err = 0;
- if (nd &&
- ((nd->flags & LOOKUP_ACCESS) ||
- ((nd->flags & LOOKUP_OPEN) && mode != 0)))
+ if (nd && (nd->flags & LOOKUP_ACCESS))
err = fuse_access(inode, mask);
}
return err;
@@ -662,7 +660,18 @@ static void free_link(char *link)
free_page((unsigned long) link);
}
-#ifdef KERNEL_2_6_8_PLUS
+#ifdef KERNEL_2_6_13_PLUS
+static void *fuse_follow_link(struct dentry *dentry, struct nameidata *nd)
+{
+ nd_set_link(nd, read_link(dentry));
+ return NULL;
+}
+
+static void fuse_put_link(struct dentry *dentry, struct nameidata *nd, void *c)
+{
+ free_link(nd_get_link(nd));
+}
+#elif defined(KERNEL_2_6_8_PLUS)
static int fuse_follow_link(struct dentry *dentry, struct nameidata *nd)
{
nd_set_link(nd, read_link(dentry));