• A
    fb_defio: fix for non-dirty ptes · 49bbd815
    Albert Herranz 提交于
    Fix a problem observed while using fb_defio with a short delay on a
    PowerPC platform.
    
    It is possible that page_mkclean() is invoked in the deferred io work
    function _before_ a PTE has been marked dirty.  In this case, the page is
    removed from the defio pagelist but page_mkclean() does not write-protect
    the page again.  The end result is that defio ignores all subsequent
    writes to the page and the corresponding portions of the framebuffer never
    get updated.
    
    The fix consists in keeping track of the pages with non-dirty PTEs,
    re-checking them again on the next deferred io work iteration.  Note that
    those pages are not passed to the defio callback as they are not written
    by userspace yet.
    Signed-off-by: NAlbert Herranz <albert_herranz@yahoo.es>
    Acked-by: NJaya Kumar <jayakumar.lkml@gmail.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    49bbd815
fb_defio.c 6.6 KB