diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2005-09-02 13:05:06 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2005-09-02 13:05:06 +0000 |
commit | 564878188251c3f66c0a297dcad7d6c095ac2efd (patch) | |
tree | 3ee0671cf6300e46b3de3613092d7199b7fe9ec6 /kernel/dir.c | |
parent | ecce1bf2ff73eb37048a784df0fa97ad041c6bdd (diff) | |
download | libfuse-564878188251c3f66c0a297dcad7d6c095ac2efd.tar.gz |
fix
Diffstat (limited to 'kernel/dir.c')
-rw-r--r-- | kernel/dir.c | 17 |
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)); |