summaryrefslogtreecommitdiffstats
path: root/mm/shmem.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/shmem.c')
-rw-r--r--mm/shmem.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/mm/shmem.c b/mm/shmem.c
index 0605716aee06..bab9041b1967 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -2496,8 +2496,15 @@ static int shmem_symlink(struct inode *dir, struct dentry *dentry, const char *s
2496 return 0; 2496 return 0;
2497} 2497}
2498 2498
2499static void shmem_put_link(void *arg)
2500{
2501 mark_page_accessed(arg);
2502 put_page(arg);
2503}
2504
2499static const char *shmem_get_link(struct dentry *dentry, 2505static const char *shmem_get_link(struct dentry *dentry,
2500 struct inode *inode, void **cookie) 2506 struct inode *inode,
2507 struct delayed_call *done)
2501{ 2508{
2502 struct page *page = NULL; 2509 struct page *page = NULL;
2503 int error; 2510 int error;
@@ -2515,17 +2522,10 @@ static const char *shmem_get_link(struct dentry *dentry,
2515 return ERR_PTR(error); 2522 return ERR_PTR(error);
2516 unlock_page(page); 2523 unlock_page(page);
2517 } 2524 }
2518 *cookie = page; 2525 set_delayed_call(done, shmem_put_link, page);
2519 return page_address(page); 2526 return page_address(page);
2520} 2527}
2521 2528
2522static void shmem_put_link(struct inode *unused, void *cookie)
2523{
2524 struct page *page = cookie;
2525 mark_page_accessed(page);
2526 page_cache_release(page);
2527}
2528
2529#ifdef CONFIG_TMPFS_XATTR 2529#ifdef CONFIG_TMPFS_XATTR
2530/* 2530/*
2531 * Superblocks without xattr inode operations may get some security.* xattr 2531 * Superblocks without xattr inode operations may get some security.* xattr
@@ -2680,7 +2680,6 @@ static const struct inode_operations shmem_short_symlink_operations = {
2680static const struct inode_operations shmem_symlink_inode_operations = { 2680static const struct inode_operations shmem_symlink_inode_operations = {
2681 .readlink = generic_readlink, 2681 .readlink = generic_readlink,
2682 .get_link = shmem_get_link, 2682 .get_link = shmem_get_link,
2683 .put_link = shmem_put_link,
2684#ifdef CONFIG_TMPFS_XATTR 2683#ifdef CONFIG_TMPFS_XATTR
2685 .setxattr = shmem_setxattr, 2684 .setxattr = shmem_setxattr,
2686 .getxattr = shmem_getxattr, 2685 .getxattr = shmem_getxattr,