mm: /proc/pid/smaps_rollup: fix NULL pointer deref in smaps_pte_range()
[linux-2.6-block.git] / fs / proc / task_mmu.c
index 5ea1d64cb0b4c19c185ad67d5990c0ce03e82561..a027473561c6cd2277c05bfd45489584336c22dc 100644 (file)
@@ -713,6 +713,8 @@ static void smap_gather_stats(struct vm_area_struct *vma,
        smaps_walk.private = mss;
 
 #ifdef CONFIG_SHMEM
+       /* In case of smaps_rollup, reset the value from previous vma */
+       mss->check_shmem_swap = false;
        if (vma->vm_file && shmem_mapping(vma->vm_file->f_mapping)) {
                /*
                 * For shared or readonly shmem mappings we know that all
@@ -728,7 +730,7 @@ static void smap_gather_stats(struct vm_area_struct *vma,
 
                if (!shmem_swapped || (vma->vm_flags & VM_SHARED) ||
                                        !(vma->vm_flags & VM_WRITE)) {
-                       mss->swap = shmem_swapped;
+                       mss->swap += shmem_swapped;
                } else {
                        mss->check_shmem_swap = true;
                        smaps_walk.pte_hole = smaps_pte_hole;