diff -ur /md0/kernels/2.4/v2.4.8-ac3/include/asm-i386/kmap_types.h vm-2.4.8-ac3/include/asm-i386/kmap_types.h --- /md0/kernels/2.4/v2.4.8-ac3/include/asm-i386/kmap_types.h Thu May 3 11:22:18 2001 +++ vm-2.4.8-ac3/include/asm-i386/kmap_types.h Mon Aug 13 15:21:00 2001 @@ -6,6 +6,8 @@ KM_BOUNCE_WRITE, KM_SKB_DATA, KM_SKB_DATA_SOFTIRQ, + KM_USER0, + KM_USER1, KM_TYPE_NR }; diff -ur /md0/kernels/2.4/v2.4.8-ac3/include/linux/highmem.h vm-2.4.8-ac3/include/linux/highmem.h --- /md0/kernels/2.4/v2.4.8-ac3/include/linux/highmem.h Wed Aug 8 20:31:43 2001 +++ vm-2.4.8-ac3/include/linux/highmem.h Mon Aug 13 15:25:38 2001 @@ -45,8 +45,9 @@ /* when CONFIG_HIGHMEM is not set these will be plain clear/copy_page */ static inline void clear_user_highpage(struct page *page, unsigned long vaddr) { - clear_user_page(kmap(page), vaddr); - kunmap(page); + void *addr = kmap_atomic(page, KM_USER0); + clear_user_page(addr, vaddr); + kunmap_atomic(addr, KM_USER0); } static inline void clear_highpage(struct page *page) @@ -85,11 +86,11 @@ { char *vfrom, *vto; - vfrom = kmap(from); - vto = kmap(to); + vfrom = kmap_atomic(from, KM_USER0); + vto = kmap_atomic(to, KM_USER1); copy_user_page(vto, vfrom, vaddr); - kunmap(from); - kunmap(to); + kunmap_atomic(vfrom, KM_USER0); + kunmap_atomic(vto, KM_USER1); } static inline void copy_highpage(struct page *to, struct page *from)