diff -NurpP --minimal linux-3.0.7-vs2.3.1/fs/namei.c linux-3.0.7-vs2.3.1.1/fs/namei.c --- linux-3.0.7-vs2.3.1/fs/namei.c 2011-10-18 13:51:13.000000000 +0200 +++ linux-3.0.7-vs2.3.1.1/fs/namei.c 2011-11-15 16:32:33.000000000 +0100 @@ -222,11 +222,16 @@ static int __dx_permission(const struct if (!pid) goto out; + rcu_read_lock(); tsk = pid_task(pid, PIDTYPE_PID); vxdprintk(VXD_CBIT(tag, 0), "accessing %p[#%u]", tsk, (tsk ? vx_task_xid(tsk) : 0)); - if (tsk && vx_check(vx_task_xid(tsk), VS_IDENT | VS_WATCH_P)) + if (tsk && + vx_check(vx_task_xid(tsk), VS_IDENT | VS_WATCH_P)) { + rcu_read_unlock(); return 0; + } + rcu_read_unlock(); } else { /* FIXME: Should we block some entries here? */