diff options
author | Steve French <sfrench@us.ibm.com> | 2005-08-20 21:40:00 -0700 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2005-08-20 21:40:00 -0700 |
commit | 646352319b6cd369750a706706810d87f6b6efa7 (patch) | |
tree | e7830e1276cbad7d29bf9471def4b8940592c3b7 /mm/shmem.c | |
parent | d3485d37c0b3292aec0618b6663c57542df5da99 (diff) | |
parent | f6fdd7d9c273bb2a20ab467cb57067494f932fa3 (diff) |
Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Diffstat (limited to 'mm/shmem.c')
-rw-r--r-- | mm/shmem.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/mm/shmem.c b/mm/shmem.c index e64fa726a79..5a81b1ee4f7 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -1773,32 +1773,27 @@ static int shmem_symlink(struct inode *dir, struct dentry *dentry, const char *s return 0; } -static int shmem_follow_link_inline(struct dentry *dentry, struct nameidata *nd) +static void *shmem_follow_link_inline(struct dentry *dentry, struct nameidata *nd) { nd_set_link(nd, (char *)SHMEM_I(dentry->d_inode)); - return 0; + return NULL; } -static int shmem_follow_link(struct dentry *dentry, struct nameidata *nd) +static void *shmem_follow_link(struct dentry *dentry, struct nameidata *nd) { struct page *page = NULL; int res = shmem_getpage(dentry->d_inode, 0, &page, SGP_READ, NULL); nd_set_link(nd, res ? ERR_PTR(res) : kmap(page)); - return 0; + return page; } -static void shmem_put_link(struct dentry *dentry, struct nameidata *nd) +static void shmem_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie) { if (!IS_ERR(nd_get_link(nd))) { - struct page *page; - - page = find_get_page(dentry->d_inode->i_mapping, 0); - if (!page) - BUG(); + struct page *page = cookie; kunmap(page); mark_page_accessed(page); page_cache_release(page); - page_cache_release(page); } } |