aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve French <sfrench@hera.kernel.org>2005-06-09 14:44:07 -0700
committerSteve French <sfrench@hera.kernel.org>2005-06-09 14:44:07 -0700
commit3079ca621e9e09f4593c20a9a2f24237c355f683 (patch)
tree0eb2e22cb0fa382cde357f9e6125043d1cdd3758
parent0b68177ccd12866d9f19cafad212b861c9d02a8c (diff)
downloadlinux-3079ca621e9e09f4593c20a9a2f24237c355f683.tar.gz
[CIFS] Fix cifs update of page cache. Write at correct offset when out of memory
and add_to_page_cache fails. Thanks to Shaggy for pointing out the fix. Signed-off-by: Steve French (sfrench@us.ibm.com) Signed-off-by: Shaggy (shaggy@us.ibm.com)
-rw-r--r--fs/cifs/CHANGES3
-rw-r--r--fs/cifs/file.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 95483baab706ba..dab4774ee7bbb6 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -6,7 +6,8 @@ kills the cifsd thread (NB: killing the cifs kernel threads is not
recommended, unmount and rmmod cifs will kill them when they are
no longer needed). Fix readdir to ASCII servers (ie older servers
which do not support Unicode) and also require asterik.
-
+Fix out of memory case in which data could be written one page
+off in the page cache.
Version 1.33
------------
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index dde2d251fc3d6b..30ab70ce554716 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -1352,6 +1352,8 @@ static void cifs_copy_cache_pages(struct address_space *mapping,
GFP_KERNEL)) {
page_cache_release(page);
cFYI(1, ("Add page cache failed"));
+ data += PAGE_CACHE_SIZE;
+ bytes_read -= PAGE_CACHE_SIZE;
continue;
}