+ if (!asid) { /* fix version if needed */ + struct task_struct *p; + + for_each_process(p) { + if ((p->mm)) + cpu_context(cpu, p->mm) = 0; + } It is not safe. When the processor is executing these codes, another processor is freeing task_struct, setting p->mm to NULL, and freeing mm_struct. I committed a patch to solve this problem.Please see https://patchwork.linux-mips.org/patch/13789/.