goto bad_area;
        }
        ret = 0;
-       fault = handle_mm_fault(mm, vma, ea, is_write);
-       if (unlikely(fault & VM_FAULT_ERROR)) {
-               if (fault & VM_FAULT_OOM) {
+       *flt = handle_mm_fault(mm, vma, ea, is_write);
+       if (unlikely(*flt & VM_FAULT_ERROR)) {
+               if (*flt & VM_FAULT_OOM) {
                        ret = -ENOMEM;
                        goto bad_area;
-               } else if (fault & VM_FAULT_SIGBUS) {
+               } else if (*flt & VM_FAULT_SIGBUS) {
                        ret = -EFAULT;
                        goto bad_area;
                }
                BUG();
        }
-       if (fault & VM_FAULT_MAJOR)
+       if (*flt & VM_FAULT_MAJOR)
                current->maj_flt++;
        else
                current->min_flt++;
         * In case of unhandled error report the problem to user space.
         */
        if (!ret) {
-               if (flt == VM_FAULT_MINOR)
-                       ctx->stats.min_flt++;
-               else
+               if (flt & VM_FAULT_MAJOR)
                        ctx->stats.maj_flt++;
+               else
+                       ctx->stats.min_flt++;
                if (ctx->state == SPU_STATE_RUNNABLE) {
-                       if (flt == VM_FAULT_MINOR)
-                               ctx->spu->stats.min_flt++;
-                       else
+                       if (flt & VM_FAULT_MAJOR)
                                ctx->spu->stats.maj_flt++;
+                       else
+                               ctx->spu->stats.min_flt++;
                }
 
                if (ctx->spu)