=========================================================================== Index: linux/fs/pagebuf/page_buf_io.c =========================================================================== --- /usr/tmp/TmpDir.31049-0/linux/fs/pagebuf/page_buf_io.c_1.101 Mon Dec 10 10:02:06 2001 +++ linux/fs/pagebuf/page_buf_io.c Mon Dec 10 09:59:36 2001 @@ -1031,6 +1031,8 @@ err = __copy_from_user(kaddr + offset, buf, bytes); if (err) { + err = -EFAULT; + kunmap(page); ClearPageUptodate(page); goto unlock; } @@ -1043,7 +1045,6 @@ buf += bytes; unlock: - kunmap(page); UnlockPage(page); page_cache_release(page); if (err < 0) @@ -1269,6 +1270,7 @@ if (status) { status = -EFAULT; + kunmap(page); ClearPageUptodate(page); goto unlock; } @@ -1281,7 +1283,6 @@ written += bytes; unlock: - kunmap(page); SetPageReferenced(page); UnlockPage(page); page_cache_release(page);