diff --git a/kernel/process.c b/kernel/process.c index 6b826683..f085c8b3 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -1972,8 +1972,8 @@ retry: /* Copy on write */ if (((range->flag & VR_PRIVATE) || ((reason & PF_PATCH) && !(range->flag & VR_PROT_WRITE))) - && ((!page && phys == NOPHYS) || (page && - (page_is_in_memobj(page) || + && ((!page && ((phys == NOPHYS) || range->memobj)) + || (page && (page_is_in_memobj(page) || page_is_multi_mapped(page))))) { if (!(attr & PTATTR_DIRTY)) {