diff options
Diffstat (limited to 'fs/isofs/symlink.c')
-rw-r--r-- | fs/isofs/symlink.c | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/fs/isofs/symlink.c b/fs/isofs/symlink.c index 87e544324..f49bc3ee3 100644 --- a/fs/isofs/symlink.c +++ b/fs/isofs/symlink.c @@ -19,7 +19,6 @@ #include <asm/uaccess.h> static int isofs_readlink(struct inode *, char *, int); -static int isofs_follow_link(struct inode *, struct inode *, int, int, struct inode **); /* * symlinks can't do much... @@ -36,7 +35,6 @@ struct inode_operations isofs_symlink_inode_operations = { NULL, /* mknod */ NULL, /* rename */ isofs_readlink, /* readlink */ - isofs_follow_link, /* follow_link */ NULL, /* readpage */ NULL, /* writepage */ NULL, /* bmap */ @@ -44,51 +42,11 @@ struct inode_operations isofs_symlink_inode_operations = { NULL /* permission */ }; -static int isofs_follow_link(struct inode * dir, struct inode * inode, - int flag, int mode, struct inode ** res_inode) -{ - int error; - char * pnt; - - if (!dir) { - dir = current->fs->root; - dir->i_count++; - } - if (!inode) { - iput(dir); - *res_inode = NULL; - return -ENOENT; - } - if (!S_ISLNK(inode->i_mode)) { - iput(dir); - *res_inode = inode; - return 0; - } - if ((current->link_count > 5) || - !(pnt = get_rock_ridge_symlink(inode))) { - iput(dir); - iput(inode); - *res_inode = NULL; - return -ELOOP; - } - iput(inode); - current->link_count++; - error = open_namei(pnt,flag,mode,res_inode,dir); - current->link_count--; - kfree(pnt); - return error; -} - static int isofs_readlink(struct inode * inode, char * buffer, int buflen) { char * pnt; int i; - if (!S_ISLNK(inode->i_mode)) { - iput(inode); - return -EINVAL; - } - if (buflen > 1023) buflen = 1023; pnt = get_rock_ridge_symlink(inode); |