lkml.org 
[lkml]   [2011]   [Dec]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[38/45] ext4: handle EOF correctly in ext4_bio_write_page()
    3.0-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Yongqiang Yang <xiaoqiangnk@gmail.com>

    commit 5a0dc7365c240795bf190766eba7a27600be3b3e upstream.

    We need to zero out part of a page which beyond EOF before setting uptodate,
    otherwise, mapread or write will see non-zero data beyond EOF.

    Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com>
    Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    fs/ext4/page-io.c | 12 ++++++++++++
    1 file changed, 12 insertions(+)

    --- a/fs/ext4/page-io.c
    +++ b/fs/ext4/page-io.c
    @@ -405,6 +405,18 @@ int ext4_bio_write_page(struct ext4_io_s

    block_end = block_start + blocksize;
    if (block_start >= len) {
    + /*
    + * Comments copied from block_write_full_page_endio:
    + *
    + * The page straddles i_size. It must be zeroed out on
    + * each and every writepage invocation because it may
    + * be mmapped. "A file is mapped in multiples of the
    + * page size. For a file that is not a multiple of
    + * the page size, the remaining memory is zeroed when
    + * mapped, and writes to that region are not written
    + * out to the file."
    + */
    + zero_user_segment(page, block_start, block_end);
    clear_buffer_dirty(bh);
    set_buffer_uptodate(bh);
    continue;



    \
     
     \ /
      Last update: 2011-12-16 20:59    [W:4.809 / U:0.196 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site