changeset 225:16f50fb54fc0

Add kmap for highmem access
author charles
date Thu, 28 Aug 2008 03:42:11 +0100
parents 88c51f5947b9
children 77fffb9e9641
files yaffs_fs.c
diffstat 1 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/yaffs_fs.c
+++ b/yaffs_fs.c
@@ -714,13 +714,17 @@ static int yaffs_commit_write(struct fil
 			      unsigned to)
 {
 
-	void *addr = page_address(pg) + offset;
+	void *addr, *kva;
+	
 	loff_t pos = (((loff_t) pg->index) << PAGE_CACHE_SHIFT) + offset;
 	int nBytes = to - offset;
 	int nWritten;
 
 	unsigned spos = pos;
 	unsigned saddr = (unsigned)addr;
+	
+	kva=kmap(pg);
+	addr = kva + offset;
 
 	T(YAFFS_TRACE_OS,
 	  (KERN_DEBUG "yaffs_commit_write addr %x pos %x nBytes %d\n", saddr,
@@ -739,6 +743,8 @@ static int yaffs_commit_write(struct fil
 		SetPageUptodate(pg);
 	}
 
+	kunmap(pg);
+
 	T(YAFFS_TRACE_OS,
 	  (KERN_DEBUG "yaffs_commit_write returning %d\n",
 	   nWritten == nBytes ? 0 : nWritten));