Refactor "do write back only MAP_SHARED pages"

* free_process_memory_range() always passes memobj to
  ihk_mc_pt_free_range()
* clear_range_*() don't flush page in fileobj with MF_PRIVATE flag

Fujitsu: POSTK_DEBUG_TEMP_FIX_87
Change-Id: I8d46d029b3fc51ca6f0e59d748a2fe93e324a374
This commit is contained in:
Masamichi Takagi
2018-10-12 13:37:50 +09:00
committed by Dominique Martinet
parent fb24dcea2e
commit 9cfc373538
7 changed files with 28 additions and 15 deletions

View File

@ -2174,8 +2174,9 @@ static int clear_range_l1(void *args0, pte_t *ptep, uint64_t base,
(old & PTE_DIRTY), args->memobj,
args->memobj ? args->memobj->flags : -1);
}
if (page && page_is_in_memobj(page) && ptl1_dirty(&old) &&
(args->memobj) && !(args->memobj->flags & MF_ZEROFILL)) {
if (page && page_is_in_memobj(page) &&
ptl1_dirty(&old) && args->memobj &&
!(args->memobj->flags & (MF_ZEROFILL | MF_PRIVATE))) {
memobj_flush_page(args->memobj, phys, PTL1_SIZE);
}
@ -2284,8 +2285,9 @@ static int clear_range_middle(void *args0, pte_t *ptep, uint64_t base,
page = phys_to_page(phys);
}
if (page && page_is_in_memobj(page) && ptl_dirty(&old, level) &&
!(args->memobj->flags & MF_ZEROFILL)) {
if (page && page_is_in_memobj(page) &&
ptl_dirty(&old, level) && args->memobj &&
!(args->memobj->flags & (MF_ZEROFILL | MF_PRIVATE))) {
memobj_flush_page(args->memobj, phys, tbl.pgsize);
}