mm/memblock.c: call kmemleak directly from memblock_(alloc|free)
[firefly-linux-kernel-4.4.55.git] / mm / shmem.c
index 8f1a95406bae6a61b20be247b50603cdedc30398..5402481c28d190a83718f6b1897eec78df4c0209 100644 (file)
@@ -1132,7 +1132,7 @@ repeat:
                        goto decused;
                }
 
-               SetPageSwapBacked(page);
+               __SetPageSwapBacked(page);
                __set_page_locked(page);
                error = mem_cgroup_charge_file(page, current->mm,
                                                gfp & GFP_RECLAIM_MASK);
@@ -1372,9 +1372,13 @@ shmem_write_begin(struct file *file, struct address_space *mapping,
                        loff_t pos, unsigned len, unsigned flags,
                        struct page **pagep, void **fsdata)
 {
+       int ret;
        struct inode *inode = mapping->host;
        pgoff_t index = pos >> PAGE_CACHE_SHIFT;
-       return shmem_getpage(inode, index, pagep, SGP_WRITE, NULL);
+       ret = shmem_getpage(inode, index, pagep, SGP_WRITE, NULL);
+       if (ret == 0 && *pagep)
+               init_page_accessed(*pagep);
+       return ret;
 }
 
 static int
@@ -1411,7 +1415,7 @@ static ssize_t shmem_file_aio_read(struct kiocb *iocb,
        pgoff_t index;
        unsigned long offset;
        enum sgp_type sgp = SGP_READ;
-       int error;
+       int error = 0;
        ssize_t retval;
        size_t count;
        loff_t *ppos = &iocb->ki_pos;