* [PATCH cgroup/for-4.10-fixes] cgroup/pids: remove spurious suspicious RCU usage warning
[not found] ` <1488391071.4812.2.camel@gmx.de>
@ 2017-03-01 20:39 ` Tejun Heo
[not found] ` <20170301203907.GF3662-piEFEHQLUPpN0TnZuCh8vA@public.gmane.org>
0 siblings, 1 reply; 2+ messages in thread
From: Tejun Heo @ 2017-03-01 20:39 UTC (permalink / raw)
To: cgroups; +Cc: LKML, Mike Galbraith, kernel-team
pids_can_fork() is special in that the css association is guaranteed
to be stable throughout the function and thus doesn't need RCU
protection around task_css access. When determining the css to charge
the pid, task_css_check() is used to override the RCU sanity check.
While adding a warning message on fork rejection from pids limit,
135b8b37bd91 ("cgroup: Add pids controller event when fork fails
because of pid limit") incorrectly added a task_css access which is
neither RCU protected or explicitly annotated. This triggers the
following suspicious RCU usage warning when RCU debugging is enabled.
cgroup: fork rejected by pids controller in
===============================
[ ERR: suspicious RCU usage. ]
4.10.0-work+ #1 Not tainted
-------------------------------
./include/linux/cgroup.h:435 suspicious rcu_dereference_check() usage!
other info that might help us debug this:
rcu_scheduler_active = 2, debug_locks = 0
1 lock held by bash/1748:
#0: (&cgroup_threadgroup_rwsem){+++++.}, at: [<ffffffff81052c96>] _do_fork+0xe6/0x6e0
stack backtrace:
CPU: 3 PID: 1748 Comm: bash Not tainted 4.10.0-work+ #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.9.3-1.fc25 04/01/2014
Call Trace:
dump_stack+0x68/0x93
lockdep_rcu_suspicious+0xd7/0x110
pids_can_fork+0x1c7/0x1d0
cgroup_can_fork+0x67/0xc0
copy_process.part.58+0x1709/0x1e90
_do_fork+0xe6/0x6e0
SyS_clone+0x19/0x20
do_syscall_64+0x5c/0x140
entry_SYSCALL64_slow_path+0x25/0x25
RIP: 0033:0x7f7853fab93a
RSP: 002b:00007ffc12d05c90 EFLAGS: 00000246 ORIG_RAX: 0000000000000038
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f7853fab93a
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000001200011
RBP: 00007ffc12d05cc0 R08: 0000000000000000 R09: 00007f78548db700
R10: 00007f78548db9d0 R11: 0000000000000246 R12: 00000000000006d4
R13: 0000000000000001 R14: 0000000000000000 R15: 000055e3ebe2c04d
/asdf
There's no reason to dereference task_css again here when the
associated css is already available. Fix it by replacing the
task_cgroup() call with css->cgroup.
Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Mike Galbraith <efault@gmx.de>
Fixes: 135b8b37bd91 ("cgroup: Add pids controller event when fork fails because of pid limit")
Cc: Kenny Yu <kennyyu@fb.com>
Cc: stable@vger.kernel.org # v4.8+
---
kernel/cgroup/pids.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/cgroup/pids.c b/kernel/cgroup/pids.c
index 2bd6737..a57242e 100644
--- a/kernel/cgroup/pids.c
+++ b/kernel/cgroup/pids.c
@@ -229,7 +229,7 @@ static int pids_can_fork(struct task_struct *task)
/* Only log the first time events_limit is incremented. */
if (atomic64_inc_return(&pids->events_limit) == 1) {
pr_info("cgroup: fork rejected by pids controller in ");
- pr_cont_cgroup_path(task_cgroup(current, pids_cgrp_id));
+ pr_cont_cgroup_path(css->cgroup);
pr_cont("\n");
}
cgroup_file_notify(&pids->events_file);
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH cgroup/for-4.10-fixes] cgroup/pids: remove spurious suspicious RCU usage warning
[not found] ` <20170301203907.GF3662-piEFEHQLUPpN0TnZuCh8vA@public.gmane.org>
@ 2017-03-06 20:12 ` Tejun Heo
0 siblings, 0 replies; 2+ messages in thread
From: Tejun Heo @ 2017-03-06 20:12 UTC (permalink / raw)
To: cgroups-u79uwXL29TY76Z2rM5mHXA
Cc: LKML, Mike Galbraith, kernel-team-b10kYP2dOMg
On Wed, Mar 01, 2017 at 03:39:07PM -0500, Tejun Heo wrote:
> pids_can_fork() is special in that the css association is guaranteed
> to be stable throughout the function and thus doesn't need RCU
> protection around task_css access. When determining the css to charge
> the pid, task_css_check() is used to override the RCU sanity check.
>
> While adding a warning message on fork rejection from pids limit,
> 135b8b37bd91 ("cgroup: Add pids controller event when fork fails
> because of pid limit") incorrectly added a task_css access which is
> neither RCU protected or explicitly annotated. This triggers the
> following suspicious RCU usage warning when RCU debugging is enabled.
Applied to cgroup/for-4.11-fixes.
--
tejun
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-03-06 20:12 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1487585723.8499.5.camel@gmx.de>
[not found] ` <20170301174452.GE3662@htj.duckdns.org>
[not found] ` <1488391071.4812.2.camel@gmx.de>
2017-03-01 20:39 ` [PATCH cgroup/for-4.10-fixes] cgroup/pids: remove spurious suspicious RCU usage warning Tejun Heo
[not found] ` <20170301203907.GF3662-piEFEHQLUPpN0TnZuCh8vA@public.gmane.org>
2017-03-06 20:12 ` Tejun Heo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).