Merge branch 'splice' of git://brick.kernel.dk/data/git/linux-2.6-block
[powerpc.git] / arch / um / kernel / skas / tlb.c
index 4b5fd20..6e84963 100644 (file)
 #include "os.h"
 #include "tlb.h"
 
-static void *do_ops(union mm_context *mmu, struct host_vm_op *ops, int last,
-                   int finished, void *flush)
+static int do_ops(union mm_context *mmu, struct host_vm_op *ops, int last,
+                 int finished, void **flush)
 {
        struct host_vm_op *op;
-       int i;
+        int i, ret = 0;
 
-       for(i = 0; i <= last; i++){
+        for(i = 0; i <= last && !ret; i++){
                op = &ops[i];
                switch(op->type){
                case MMAP:
-                       flush = map(&mmu->skas.id, op->u.mmap.addr,
-                                   op->u.mmap.len, op->u.mmap.r, op->u.mmap.w,
-                                   op->u.mmap.x, op->u.mmap.fd,
-                                   op->u.mmap.offset, finished, flush);
+                       ret = map(&mmu->skas.id, op->u.mmap.addr,
+                                 op->u.mmap.len, op->u.mmap.r, op->u.mmap.w,
+                                 op->u.mmap.x, op->u.mmap.fd,
+                                 op->u.mmap.offset, finished, flush);
                        break;
                case MUNMAP:
-                       flush = unmap(&mmu->skas.id, (void *) op->u.munmap.addr,
-                                     op->u.munmap.len, finished, flush);
+                       ret = unmap(&mmu->skas.id,
+                                   (void *) op->u.munmap.addr,
+                                   op->u.munmap.len, finished, flush);
                        break;
                case MPROTECT:
-                       flush = protect(&mmu->skas.id, op->u.mprotect.addr,
-                                       op->u.mprotect.len, op->u.mprotect.r,
-                                       op->u.mprotect.w, op->u.mprotect.x,
-                                       finished, flush);
+                       ret = protect(&mmu->skas.id, op->u.mprotect.addr,
+                                     op->u.mprotect.len, op->u.mprotect.r,
+                                     op->u.mprotect.w, op->u.mprotect.x,
+                                     finished, flush);
                        break;
                default:
                        printk("Unknown op type %d in do_ops\n", op->type);
@@ -49,7 +50,7 @@ static void *do_ops(union mm_context *mmu, struct host_vm_op *ops, int last,
                }
        }
 
-       return flush;
+       return ret;
 }
 
 extern int proc_mm;