]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - fs/namei.c
don't put symlink bodies in pagecache into highmem
[mirror_ubuntu-zesty-kernel.git] / fs / namei.c
index 4bae5cbfaa853c49489174485abdb969a0a2a092..2808958e6c67041ad6cc8eba7cd294fe30c1e5e6 100644 (file)
@@ -4527,7 +4527,8 @@ static const char *page_getlink(struct dentry * dentry, void **cookie)
        if (IS_ERR(page))
                return (char*)page;
        *cookie = page;
-       kaddr = kmap(page);
+       BUG_ON(mapping_gfp_mask(mapping) & __GFP_HIGHMEM);
+       kaddr = page_address(page);
        nd_terminate_link(kaddr, dentry->d_inode->i_size, PAGE_SIZE - 1);
        return kaddr;
 }
@@ -4541,7 +4542,6 @@ EXPORT_SYMBOL(page_follow_link_light);
 void page_put_link(struct inode *unused, void *cookie)
 {
        struct page *page = cookie;
-       kunmap(page);
        page_cache_release(page);
 }
 EXPORT_SYMBOL(page_put_link);
@@ -4565,7 +4565,6 @@ int __page_symlink(struct inode *inode, const char *symname, int len, int nofs)
        struct page *page;
        void *fsdata;
        int err;
-       char *kaddr;
        unsigned int flags = AOP_FLAG_UNINTERRUPTIBLE;
        if (nofs)
                flags |= AOP_FLAG_NOFS;
@@ -4576,9 +4575,7 @@ retry:
        if (err)
                goto fail;
 
-       kaddr = kmap_atomic(page);
-       memcpy(kaddr, symname, len-1);
-       kunmap_atomic(kaddr);
+       memcpy(page_address(page), symname, len-1);
 
        err = pagecache_write_end(NULL, mapping, 0, len-1, len-1,
                                                        page, fsdata);