diff -Naur -X exclude-files ac_clean/arch/um/kernel/tlb.c ac/arch/um/kernel/tlb.c
--- ac_clean/arch/um/kernel/tlb.c	Sun May 27 19:47:24 2001
+++ ac/arch/um/kernel/tlb.c	Sun May 27 20:24:51 2001
@@ -36,14 +36,19 @@
 		end_addr = end_vm;
 	}
 	for(addr=start_addr;addr<end_addr;){
-		if(force){
-			struct vm_area_struct *vma;
-			vma = find_vma(&kernel_maps, addr);
-			if(vma && (vma->vm_start <= addr)){
-				addr = vma->vm_end;
+                if(force){
+			extern unsigned long _stext;
+                        struct vm_area_struct *vma;
+			if(addr == (unsigned long) ROUND_DOWN(&_stext)){
+				addr = (unsigned long) last_brk;
 				continue;
 			}
-		}
+                        vma = find_vma(&kernel_maps, addr);
+                        if(vma && (vma->vm_start <= addr)){
+                                addr = vma->vm_end;
+                                continue;
+                        }
+                }
 
 		if((addr >= start_vm) && (addr < end_vm)) mm = &init_mm;
 		else mm = proc_mm;