--- linux-2.6.18-vs2.1.1-rc38/kernel/irq/handle.c 2006-09-25 17:36:34 +0200 +++ linux-2.6.18-vs2.1.1-rc38.3/kernel/irq/handle.c 2006-10-13 21:01:50 +0200 @@ -174,6 +174,8 @@ fastcall unsigned int __do_IRQ(unsigned struct vx_info_save vxis; unsigned int status; + WARN_ON(current->xid); + kstat_this_cpu.irqs[irq]++; if (CHECK_IRQ_PER_CPU(desc->status)) { irqreturn_t action_ret; --- linux-2.6.18-vs2.1.1-rc38/kernel/pid.c 2006-10-06 23:27:17 +0200 +++ linux-2.6.18-vs2.1.1-rc38.3/kernel/pid.c 2006-10-13 22:01:50 +0200 @@ -261,8 +261,13 @@ struct task_struct * fastcall pid_task(s first = rcu_dereference(pid->tasks[type].first); if (first) result = hlist_entry(first, struct task_struct, pids[(type)].node); - if (result && !vx_check(vx_task_xid(result), VX_WATCH|VX_ADMIN|VX_IDENT)) + if (result && (type == PIDTYPE_PID) && + !vx_check(vx_task_xid(result), VX_WATCH|VX_IDENT)) { + vxwprintk(current->xid, "[#%u] pid_task(%d,%d) = %p[#%u]", + current->xid, pid->nr, type, result, vx_task_xid(result)); + WARN_ON(current->xid); result = NULL; + } } return result; }