Signed-off-by: Badari Pulavarty --- linux-2.4.29-rc1.org/fs/nfs/dir.c 2005-01-07 07:39:06.000000000 -0800 +++ linux-2.4.29-rc1/fs/nfs/dir.c 2005-01-10 00:15:56.000000000 -0800 @@ -580,8 +580,8 @@ static struct dentry *nfs_lookup(struct { struct inode *inode; int error; - struct nfs_fh fhandle; - struct nfs_fattr fattr; + struct nfs_fh *fhandle; + struct nfs_fattr *fattr; dfprintk(VFS, "NFS: lookup(%s/%s)\n", dentry->d_parent->d_name.name, dentry->d_name.name); @@ -591,15 +591,22 @@ static struct dentry *nfs_lookup(struct goto out; error = -ENOMEM; + fhandle = kmalloc(sizeof(struct nfs_fh), GFP_KERNEL); + if (!fhandle) + goto out; + fattr = kmalloc(sizeof(struct nfs_fattr), GFP_KERNEL); + if (!fattr) + goto free_fhandle; + dentry->d_op = &nfs_dentry_operations; - error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, &fhandle, &fattr); + error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, fhandle, fattr); inode = NULL; if (error == -ENOENT) goto no_entry; if (!error) { error = -EACCES; - inode = nfs_fhget(dentry, &fhandle, &fattr); + inode = nfs_fhget(dentry, fhandle, fattr); if (inode) { no_entry: d_add(dentry, inode); @@ -607,6 +614,9 @@ static struct dentry *nfs_lookup(struct } nfs_renew_times(dentry); } + kfree(fattr); +free_fhandle: + kfree(fhandle); out: return ERR_PTR(error); }