X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=fs%2Fnfs%2Fsymlink.c;fp=fs%2Fnfs%2Fsymlink.c;h=18dc95b0b64638695a9dfa9b6db1983875d9a757;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=600bbe630abd99cdc6e8f9074984495630c9adc1;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/fs/nfs/symlink.c b/fs/nfs/symlink.c index 600bbe630..18dc95b0b 100644 --- a/fs/nfs/symlink.c +++ b/fs/nfs/symlink.c @@ -52,7 +52,7 @@ static void *nfs_follow_link(struct dentry *dentry, struct nameidata *nd) { struct inode *inode = dentry->d_inode; struct page *page; - void *err = ERR_PTR(nfs_revalidate_mapping(inode, inode->i_mapping)); + void *err = ERR_PTR(nfs_revalidate_inode(NFS_SERVER(inode), inode)); if (err) goto read_failed; page = read_cache_page(&inode->i_data, 0, @@ -75,13 +75,22 @@ read_failed: return NULL; } +static void nfs_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie) +{ + if (cookie) { + struct page *page = cookie; + kunmap(page); + page_cache_release(page); + } +} + /* * symlinks can't do much... */ struct inode_operations nfs_symlink_inode_operations = { .readlink = generic_readlink, .follow_link = nfs_follow_link, - .put_link = page_put_link, + .put_link = nfs_put_link, .getattr = nfs_getattr, .setattr = nfs_setattr, };