• Linus Torvalds's avatar
    vfs: add missing virtual cache flush after editing partial pages · 6d283dba
    Linus Torvalds authored
    
    
    Andrew Morton pointed this out a month ago, and then I completely forgot
    about it.
    
    If we read a partial last page of a block device, we will zero out the
    end of the page, but since that page can then be mapped into user space,
    we should also make sure to flush the cache on architectures that have
    virtual caches.  We have the flush_dcache_page() function for this, so
    use it.
    
    Now, in practice this really never matters, because nobody sane uses
    virtual caches to begin with, and they largely exist on old broken RISC
    arhitectures.
    
    And even if you did run on one of those obsolete CPU's, the whole "mmap
    and access the last partial page of a block device" behavior probably
    doesn't actually exist.  The normal IO functions (read/write) will never
    see the zeroed-out part of the page that migth not be coherent in the
    cache, because they honor the size of the device.
    
    So I'm marking this for stable (3.7 only), but I'm not sure anybody will
    ever care.
    Pointed-out-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: stable@vger.kernel.org  # 3.7
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6d283dba