/*pr_info("binder_ioctl: %d:%d %x %lx\n",
                        proc->pid, current->pid, cmd, arg);*/
 
+       if (unlikely(current->mm != proc->vma_vm_mm)) {
+               pr_err("current mm mismatch proc mm\n");
+               return -EINVAL;
+       }
        trace_binder_ioctl(cmd, arg);
 
        ret = wait_event_interruptible(binder_user_error_wait, binder_stop_on_user_error < 2);
                return -ENOMEM;
        get_task_struct(current);
        proc->tsk = current;
+       proc->vma_vm_mm = current->mm;
        INIT_LIST_HEAD(&proc->todo);
        init_waitqueue_head(&proc->wait);
        proc->default_priority = task_nice(current);