From: Latchesar Ionkov Two symlink fixes, v9fs_readlink didn't copy the last character of the symlink name, v9fs_vfs_follow_link incorrectly called strlen of newly allocated buffer instead of PATH_MAX. Signed-off-by: Latchesar Ionkov Signed-off-by: Andrew Morton --- fs/9p/vfs_inode.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff -puN fs/9p/vfs_inode.c~v9fs-symlink-support-fixes fs/9p/vfs_inode.c --- devel/fs/9p/vfs_inode.c~v9fs-symlink-support-fixes 2006-01-22 22:40:37.000000000 -0800 +++ devel-akpm/fs/9p/vfs_inode.c 2006-01-22 22:40:37.000000000 -0800 @@ -886,8 +886,8 @@ static int v9fs_readlink(struct dentry * } /* copy extension buffer into buffer */ - if (fcall->params.rstat.stat.extension.len < buflen) - buflen = fcall->params.rstat.stat.extension.len; + if (fcall->params.rstat.stat.extension.len+1 < buflen) + buflen = fcall->params.rstat.stat.extension.len + 1; memcpy(buffer, fcall->params.rstat.stat.extension.str, buflen - 1); buffer[buflen-1] = 0; @@ -951,7 +951,7 @@ static void *v9fs_vfs_follow_link(struct if (!link) link = ERR_PTR(-ENOMEM); else { - len = v9fs_readlink(dentry, link, strlen(link)); + len = v9fs_readlink(dentry, link, PATH_MAX); if (len < 0) { __putname(link); _