Should be all fixed in v2 i built with and without mmu notifier and did not had any issue in v2. On Fri, Dec 07, 2018 at 05:19:21AM +0800, kbuild test robot wrote: > Hi Jérôme, > > I love your patch! Yet something to improve: > > [auto build test ERROR on linus/master] > [also build test ERROR on v4.20-rc5] > [cannot apply to next-20181206] > [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] > > url: https://github.com/0day-ci/linux/commits/jglisse-redhat-com/mmu-notifier-contextual-informations/20181207-031930 > config: x86_64-randconfig-x017-201848 (attached as .config) > compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 > reproduce: > # save the attached .config to linux build tree > make ARCH=x86_64 > > All errors (new ones prefixed by >>): > > fs///proc/task_mmu.c: In function 'clear_refs_write': > fs///proc/task_mmu.c:1099:29: error: storage size of 'range' isn't known > struct mmu_notifier_range range; > ^~~~~ > >> fs///proc/task_mmu.c:1147:18: error: 'MMU_NOTIFY_SOFT_DIRTY' undeclared (first use in this function); did you mean 'CLEAR_REFS_SOFT_DIRTY'? > range.event = MMU_NOTIFY_SOFT_DIRTY; > ^~~~~~~~~~~~~~~~~~~~~ > CLEAR_REFS_SOFT_DIRTY > fs///proc/task_mmu.c:1147:18: note: each undeclared identifier is reported only once for each function it appears in > fs///proc/task_mmu.c:1099:29: warning: unused variable 'range' [-Wunused-variable] > struct mmu_notifier_range range; > ^~~~~ > > vim +1147 fs///proc/task_mmu.c > > 1069 > 1070 static ssize_t clear_refs_write(struct file *file, const char __user *buf, > 1071 size_t count, loff_t *ppos) > 1072 { > 1073 struct task_struct *task; > 1074 char buffer[PROC_NUMBUF]; > 1075 struct mm_struct *mm; > 1076 struct vm_area_struct *vma; > 1077 enum clear_refs_types type; > 1078 struct mmu_gather tlb; > 1079 int itype; > 1080 int rv; > 1081 > 1082 memset(buffer, 0, sizeof(buffer)); > 1083 if (count > sizeof(buffer) - 1) > 1084 count = sizeof(buffer) - 1; > 1085 if (copy_from_user(buffer, buf, count)) > 1086 return -EFAULT; > 1087 rv = kstrtoint(strstrip(buffer), 10, &itype); > 1088 if (rv < 0) > 1089 return rv; > 1090 type = (enum clear_refs_types)itype; > 1091 if (type < CLEAR_REFS_ALL || type >= CLEAR_REFS_LAST) > 1092 return -EINVAL; > 1093 > 1094 task = get_proc_task(file_inode(file)); > 1095 if (!task) > 1096 return -ESRCH; > 1097 mm = get_task_mm(task); > 1098 if (mm) { > > 1099 struct mmu_notifier_range range; > 1100 struct clear_refs_private cp = { > 1101 .type = type, > 1102 }; > 1103 struct mm_walk clear_refs_walk = { > 1104 .pmd_entry = clear_refs_pte_range, > 1105 .test_walk = clear_refs_test_walk, > 1106 .mm = mm, > 1107 .private = &cp, > 1108 }; > 1109 > 1110 if (type == CLEAR_REFS_MM_HIWATER_RSS) { > 1111 if (down_write_killable(&mm->mmap_sem)) { > 1112 count = -EINTR; > 1113 goto out_mm; > 1114 } > 1115 > 1116 /* > 1117 * Writing 5 to /proc/pid/clear_refs resets the peak > 1118 * resident set size to this mm's current rss value. > 1119 */ > 1120 reset_mm_hiwater_rss(mm); > 1121 up_write(&mm->mmap_sem); > 1122 goto out_mm; > 1123 } > 1124 > 1125 down_read(&mm->mmap_sem); > 1126 tlb_gather_mmu(&tlb, mm, 0, -1); > 1127 if (type == CLEAR_REFS_SOFT_DIRTY) { > 1128 for (vma = mm->mmap; vma; vma = vma->vm_next) { > 1129 if (!(vma->vm_flags & VM_SOFTDIRTY)) > 1130 continue; > 1131 up_read(&mm->mmap_sem); > 1132 if (down_write_killable(&mm->mmap_sem)) { > 1133 count = -EINTR; > 1134 goto out_mm; > 1135 } > 1136 for (vma = mm->mmap; vma; vma = vma->vm_next) { > 1137 vma->vm_flags &= ~VM_SOFTDIRTY; > 1138 vma_set_page_prot(vma); > 1139 } > 1140 downgrade_write(&mm->mmap_sem); > 1141 break; > 1142 } > 1143 > 1144 range.start = 0; > 1145 range.end = -1UL; > 1146 range.mm = mm; > > 1147 range.event = MMU_NOTIFY_SOFT_DIRTY; > 1148 mmu_notifier_invalidate_range_start(&range); > 1149 } > 1150 walk_page_range(0, mm->highest_vm_end, &clear_refs_walk); > 1151 if (type == CLEAR_REFS_SOFT_DIRTY) > 1152 mmu_notifier_invalidate_range_end(&range); > 1153 tlb_finish_mmu(&tlb, 0, -1); > 1154 up_read(&mm->mmap_sem); > 1155 out_mm: > 1156 mmput(mm); > 1157 } > 1158 put_task_struct(task); > 1159 > 1160 return count; > 1161 } > 1162 > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation