static int jffs2_follow_link(struct dentry *dentry, struct nameidata *nd) { unsigned char *buf; buf = jffs2_getlink(JFFS2_SB_INFO(dentry->d_inode->i_sb), JFFS2_INODE_INFO(dentry->d_inode)); nd_set_link(nd, buf); return 0; }
int jffs2_readlink(struct dentry *dentry, char *buffer, int buflen) { unsigned char *kbuf; int ret; kbuf = jffs2_getlink(dentry); if (IS_ERR(kbuf)) return PTR_ERR(kbuf); ret = vfs_readlink(dentry, buffer, buflen, kbuf); kfree(kbuf); return ret; }
int jffs2_readlink(struct dentry *dentry, char *buffer, int buflen) { unsigned char *kbuf; int ret; kbuf = jffs2_getlink(JFFS2_SB_INFO(dentry->d_inode->i_sb), JFFS2_INODE_INFO(dentry->d_inode)); if (IS_ERR(kbuf)) return PTR_ERR(kbuf); ret = vfs_readlink(dentry, buffer, buflen, kbuf); kfree(kbuf); return ret; }
int jffs2_follow_link(struct dentry *dentry, struct nameidata *nd) { unsigned char *buf; int ret; buf = jffs2_getlink(dentry); if (IS_ERR(buf)) return PTR_ERR(buf); ret = vfs_follow_link(nd, buf); kfree(buf); return ret; }
int jffs2_follow_link(struct dentry *dentry, struct nameidata *nd) { unsigned char *buf; int ret; buf = jffs2_getlink(JFFS2_SB_INFO(dentry->d_inode->i_sb), JFFS2_INODE_INFO(dentry->d_inode)); if (IS_ERR(buf)) return PTR_ERR(buf); ret = vfs_follow_link(nd, buf); kfree(buf); return ret; }