diff -ur /root/comedi/comedi/drivers/mite.c comedi/comedi/drivers/mite.c
--- /root/comedi/comedi/drivers/mite.c	Wed Sep  4 23:41:08 2002
+++ comedi/comedi/drivers/mite.c	Sat Oct 19 21:25:37 2002
@@ -360,6 +360,7 @@
 
 	if(mite->ring){
 		kfree(mite->ring);
+		mite->ring = NULL;
 	}
 
 	if(async->prealloc_bufsz==0){
@@ -409,19 +410,7 @@
 #ifdef USE_KMALLOC
 		kfree(async->prealloc_buf);
 #else
-		{       
-			unsigned long addr = (unsigned long)async->prealloc_buf;
-			unsigned long size = async->prealloc_bufsz;
-			unsigned long page;
-
-			while(size>0){
-				page = kvirt_to_pa(addr);
-				mem_map_unreserve(virt_to_page(__va(page)));
-				addr += PAGE_SIZE;
-				size -= PAGE_SIZE;
-			}
-		}       
-		vfree(async->prealloc_buf);
+	rvfree(async->prealloc_buf, async->prealloc_bufsz);
 #endif
 		async->prealloc_buf = NULL;
 		async->prealloc_bufsz = 0;
@@ -431,19 +420,7 @@
 #ifdef USE_KMALLOC
 		async->prealloc_buf = kmalloc(new_size, GFP_KERNEL);
 #else
-		async->prealloc_buf = vmalloc_32(new_size);
-		{       
-			unsigned long addr = (unsigned long)async->prealloc_buf;
-			unsigned long size = async->prealloc_bufsz;
-			unsigned long page;
-
-			while(size>0){
-				page = kvirt_to_pa(addr);
-				mem_map_reserve(virt_to_page(__va(page)));
-				addr += PAGE_SIZE;
-				size -= PAGE_SIZE;
-			}
-		}       
+		async->prealloc_buf = rvmalloc(new_size);
 #endif
 		if(async->prealloc_buf == NULL){
 			async->prealloc_bufsz = 0;
@@ -637,6 +614,7 @@
 EXPORT_SYMBOL(mite_list_devices);
 EXPORT_SYMBOL(mite_prep_dma);
 EXPORT_SYMBOL(mite_buf_alloc);
+EXPORT_SYMBOL(mite_load_buffer);
 EXPORT_SYMBOL(mite_bytes_transferred);
 #ifdef DEBUG_MITE
 EXPORT_SYMBOL(mite_print_chsr);
diff -ur /root/comedi/comedi/drivers/mite.h comedi/comedi/drivers/mite.h
--- /root/comedi/comedi/drivers/mite.h	Sun Jul  7 07:54:07 2002
+++ comedi/comedi/drivers/mite.h	Sat Oct 19 16:09:30 2002
@@ -92,6 +92,7 @@
 int mite_dma_tcr(struct mite_struct *mite);
 void mite_dma_arm(struct mite_struct *mite);
 void mite_dma_disarm(struct mite_struct *mite);
+int mite_load_buffer(struct mite_struct *mite, comedi_async *async);
 unsigned int mite_bytes_transferred(struct mite_struct *mite, int chan);
 
 #if 0
diff -ur /root/comedi/comedi/kcomedilib/data.c comedi/comedi/kcomedilib/data.c
--- /root/comedi/comedi/kcomedilib/data.c	Fri Apr 26 20:24:47 2002
+++ comedi/comedi/kcomedilib/data.c	Sat Oct 19 13:53:39 2002
@@ -23,6 +23,8 @@
 
 #include <linux/comedi.h>
 #include <linux/comedilib.h>
+/* for memset */
+#include <linux/string.h>
 
 
 int comedi_data_write(comedi_t *dev,unsigned int subdev,unsigned int chan,
Only in comedi/comedi/kcomedilib: data.o
diff -ur /root/comedi/comedi/kcomedilib/dio.c comedi/comedi/kcomedilib/dio.c
--- /root/comedi/comedi/kcomedilib/dio.c	Fri Apr 26 20:24:47 2002
+++ comedi/comedi/kcomedilib/dio.c	Sat Oct 19 13:53:51 2002
@@ -23,6 +23,9 @@
 
 #include <linux/comedi.h>
 #include <linux/comedilib.h>
+/* for memset */
+#include <linux/string.h>
+
 
 
 int comedi_dio_config(comedi_t * dev,unsigned int subdev,unsigned int chan,
diff -ur /root/comedi/comedi/kvmem.h comedi/comedi/kvmem.h
--- /root/comedi/comedi/kvmem.h	Fri Jun 21 22:01:18 2002
+++ comedi/comedi/kvmem.h	Sat Oct 19 13:08:29 2002
@@ -7,7 +7,7 @@
 #include <linux/version.h>
 #include <linux/slab.h>
 #include <linux/vmalloc.h>
-#include <linux/highmem.h>  /* for SuSE brokenness */
+//#include <linux/highmem.h>  /* for SuSE brokenness */
 #include <linux/wrapper.h>
 #include <asm/pgtable.h>
 #include <asm/io.h>
