ksm.c (0c49cd295d42d0032af11d55e2140dbec11dc8d0) | ksm.c (33692f27597fcab536d7cbbcc8f52905133e4aa7) |
---|---|
1/* 2 * Memory merging support. 3 * 4 * This code enables dynamic sharing of identical pages found in different 5 * memory areas, even if they are not shared by fork() 6 * 7 * Copyright (C) 2008-2009 Red Hat, Inc. 8 * Authors: --- 362 unchanged lines hidden (view full) --- 371 if (IS_ERR_OR_NULL(page)) 372 break; 373 if (PageKsm(page)) 374 ret = handle_mm_fault(vma->vm_mm, vma, addr, 375 FAULT_FLAG_WRITE); 376 else 377 ret = VM_FAULT_WRITE; 378 put_page(page); | 1/* 2 * Memory merging support. 3 * 4 * This code enables dynamic sharing of identical pages found in different 5 * memory areas, even if they are not shared by fork() 6 * 7 * Copyright (C) 2008-2009 Red Hat, Inc. 8 * Authors: --- 362 unchanged lines hidden (view full) --- 371 if (IS_ERR_OR_NULL(page)) 372 break; 373 if (PageKsm(page)) 374 ret = handle_mm_fault(vma->vm_mm, vma, addr, 375 FAULT_FLAG_WRITE); 376 else 377 ret = VM_FAULT_WRITE; 378 put_page(page); |
379 } while (!(ret & (VM_FAULT_WRITE | VM_FAULT_SIGBUS | VM_FAULT_OOM))); | 379 } while (!(ret & (VM_FAULT_WRITE | VM_FAULT_SIGBUS | VM_FAULT_SIGSEGV | VM_FAULT_OOM))); |
380 /* 381 * We must loop because handle_mm_fault() may back out if there's 382 * any difficulty e.g. if pte accessed bit gets updated concurrently. 383 * 384 * VM_FAULT_WRITE is what we have been hoping for: it indicates that 385 * COW has been broken, even if the vma does not permit VM_WRITE; 386 * but note that a concurrent fault might break PageKsm for us. 387 * --- 1954 unchanged lines hidden --- | 380 /* 381 * We must loop because handle_mm_fault() may back out if there's 382 * any difficulty e.g. if pte accessed bit gets updated concurrently. 383 * 384 * VM_FAULT_WRITE is what we have been hoping for: it indicates that 385 * COW has been broken, even if the vma does not permit VM_WRITE; 386 * but note that a concurrent fault might break PageKsm for us. 387 * --- 1954 unchanged lines hidden --- |