On Saturday, December 14, 2013 05:33:17 PM Oleg Nesterov wrote: > selinux_setprocattr() does ptrace_parent(p) under task_lock(p), > but task_struct->alloc_lock doesn't pin ->parent or ->ptrace, > this looks confusing and triggers the "suspicious RCU usage" > warning because ptrace_parent() does rcu_dereference_check(). > > And in theory this is wrong, spin_lock()->preempt_disable() > doesn't necessarily imply rcu_read_lock() we need to access > the ->parent. > > Reported-by: Evan McNabb <emcnabb@xxxxxxxxxx> > Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx> > --- > security/selinux/hooks.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) Applied, thanks. > --- a/security/selinux/hooks.c > +++ b/security/selinux/hooks.c > @@ -5503,11 +5503,11 @@ static int selinux_setprocattr(struct ta > /* Check for ptracing, and update the task SID if ok. > Otherwise, leave SID unchanged and fail. */ > ptsid = 0; > - task_lock(p); > + rcu_read_lock(); > tracer = ptrace_parent(p); > if (tracer) > ptsid = task_sid(tracer); > - task_unlock(p); > + rcu_read_unlock(); > > if (tracer) { > error = avc_has_perm(ptsid, sid, SECCLASS_PROCESS, -- paul moore www.paul-moore.com -- This message was distributed to subscribers of the selinux mailing list. If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with the words "unsubscribe selinux" without quotes as the message.