lkml.org 
[lkml]   [2008]   [Feb]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [patch 2/4] mmu_notifier: Callbacks to invalidate address ranges
    do_wp_page can reach the _end callout without passing the _begin
    callout. This prevents making the _end unles the _begin has also
    been made.

    Index: mmu_notifiers-cl-v5/mm/memory.c
    ===================================================================
    --- mmu_notifiers-cl-v5.orig/mm/memory.c 2008-02-01 04:44:03.000000000 -0600
    +++ mmu_notifiers-cl-v5/mm/memory.c 2008-02-01 04:46:18.000000000 -0600
    @@ -1564,7 +1564,7 @@ static int do_wp_page(struct mm_struct *
    {
    struct page *old_page, *new_page;
    pte_t entry;
    - int reuse = 0, ret = 0;
    + int reuse = 0, ret = 0, invalidate_started = 0;
    int page_mkwrite = 0;
    struct page *dirty_page = NULL;

    @@ -1649,6 +1649,8 @@ gotten:

    mmu_notifier(invalidate_range_begin, mm, address,
    address + PAGE_SIZE, 0);
    + invalidate_started = 1;
    +
    /*
    * Re-check the pte - we dropped the lock
    */
    @@ -1687,7 +1689,8 @@ gotten:
    page_cache_release(old_page);
    unlock:
    pte_unmap_unlock(page_table, ptl);
    - mmu_notifier(invalidate_range_end, mm,
    + if (invalidate_started)
    + mmu_notifier(invalidate_range_end, mm,
    address, address + PAGE_SIZE, 0);
    if (dirty_page) {
    if (vma->vm_file)

    \
     
     \ /
      Last update: 2008-02-01 11:53    [W:2.440 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site