[XFS] Fix follow_link when dealing with symlinks larger than 256 bytes.
authorNathan Scott <nathans@sgi.com>
Wed, 11 Jan 2006 23:32:51 +0000 (10:32 +1100)
committerNathan Scott <nathans@sgi.com>
Wed, 11 Jan 2006 23:32:51 +0000 (10:32 +1100)
Thanks to Yamamoto Takashi.

SGI-PV: 947953
SGI-Modid: xfs-linux-melb:xfs-kern:24962a

Signed-off-by: Nathan Scott <nathans@sgi.com>
fs/xfs/linux-2.6/xfs_iops.c

index d388d14..1294039 100644 (file)
@@ -546,7 +546,7 @@ linvfs_follow_link(
        ASSERT(dentry);
        ASSERT(nd);
 
-       link = (char *)kmalloc(MAXNAMELEN+1, GFP_KERNEL);
+       link = (char *)kmalloc(MAXPATHLEN+1, GFP_KERNEL);
        if (!link) {
                nd_set_link(nd, ERR_PTR(-ENOMEM));
                return NULL;
@@ -562,12 +562,12 @@ linvfs_follow_link(
        vp = LINVFS_GET_VP(dentry->d_inode);
 
        iov.iov_base = link;
-       iov.iov_len = MAXNAMELEN;
+       iov.iov_len = MAXPATHLEN;
 
        uio->uio_iov = &iov;
        uio->uio_offset = 0;
        uio->uio_segflg = UIO_SYSSPACE;
-       uio->uio_resid = MAXNAMELEN;
+       uio->uio_resid = MAXPATHLEN;
        uio->uio_iovcnt = 1;
 
        VOP_READLINK(vp, uio, 0, NULL, error);
@@ -575,7 +575,7 @@ linvfs_follow_link(
                kfree(link);
                link = ERR_PTR(-error);
        } else {
-               link[MAXNAMELEN - uio->uio_resid] = '\0';
+               link[MAXPATHLEN - uio->uio_resid] = '\0';
        }
        kfree(uio);