]> err.no Git - linux-2.6/commitdiff
zero out last page for llseek/write
authorMichael Halcrow <mhalcrow@us.ibm.com>
Wed, 27 Jun 2007 21:09:45 +0000 (14:09 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Thu, 28 Jun 2007 18:34:53 +0000 (11:34 -0700)
When one llseek's past the end of the file and then writes, every page past
the previous end of the file should be cleared.  Trevor found that the code,
as is, does not assure that the very last page is always cleared.  This patch
takes care of that.

Signed-off-by: Michael Halcrow <mhalcrow@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/ecryptfs/mmap.c

index 6df410c7726471c28b493c9d2b91f61ca6072696..7d5a43cb0d5c81ee470ee8ec9f7a7cabc329b7e7 100644 (file)
@@ -422,6 +422,8 @@ static int ecryptfs_prepare_write(struct file *file, struct page *page,
                                goto out;
                        }
                }
+               if (end_of_prev_pg_pos + 1 > i_size_read(page->mapping->host))
+                       zero_user_page(page, 0, PAGE_CACHE_SIZE, KM_USER0);
        }
 out:
        return rc;