Re: [BUGFIX][PATCH] memcg rcu lock fix in swap code (Was Re: [BUG]an RCU warning in memcg

From: Li Zefan
Date: Fri Apr 23 2010 - 00:00:39 EST


KAMEZAWA Hiroyuki wrote:
> On Fri, 23 Apr 2010 11:55:16 +0800
> Li Zefan <lizf@xxxxxxxxxxxxxx> wrote:
>
>> Li Zefan wrote:
>>> KAMEZAWA Hiroyuki wrote:
>>>> On Fri, 23 Apr 2010 11:00:41 +0800
>>>> Li Zefan <lizf@xxxxxxxxxxxxxx> wrote:
>>>>
>>>>> with CONFIG_PROVE_RCU=y, I saw this warning, it's because
>>>>> css_id() is not under rcu_read_lock().
>>>>>
>>>> Ok. Thank you for reporting.
>>>> This is ok ?
>>> Yes, and I did some more simple tests on memcg, no more warning
>>> showed up.
>>>
>> oops, after trigging oom, I saw 2 more warnings:
>>
>
> ok, I will update. thank you.
>

one more:

===================================================
[ INFO: suspicious rcu_dereference_check() usage. ]
---------------------------------------------------
kernel/cgroup.c:4438 invoked rcu_dereference_check() without protection!

other info that might help us debug this:


rcu_scheduler_active = 1, debug_locks = 1
3 locks held by bash/2270:
#0: (cgroup_mutex){+.+.+.}, at: [<c049ab37>] cgroup_lock_live_group+0x17/0x30
#1: (&mm->mmap_sem){++++++}, at: [<c0517302>] mem_cgroup_can_attach+0xb2/0x130
#2: (&(&mm->page_table_lock)->rlock){+.+.-.}, at: [<c0513c23>] mem_cgroup_count_precharge_pte_range+0x93/0x130

stack backtrace:
Pid: 2270, comm: bash Not tainted 2.6.34-rc5-tip+ #14
Call Trace:
[<c083c636>] ? printk+0x1d/0x1f
[<c0480744>] lockdep_rcu_dereference+0x94/0xb0
[<c049d6ed>] css_id+0x5d/0x60
[<c051373f>] is_target_pte_for_mc+0x16f/0x1c0
[<c083f46b>] ? _raw_spin_lock+0x6b/0x80
[<c0513c4d>] mem_cgroup_count_precharge_pte_range+0xbd/0x130
[<c0513b90>] ? mem_cgroup_count_precharge_pte_range+0x0/0x130
[<c05030bd>] walk_page_range+0x25d/0x3f0
[<c0517344>] mem_cgroup_can_attach+0xf4/0x130
[<c0513b90>] ? mem_cgroup_count_precharge_pte_range+0x0/0x130
[<c0517250>] ? mem_cgroup_can_attach+0x0/0x130
[<c049e000>] cgroup_attach_task+0x70/0x280
[<c049e633>] cgroup_tasks_write+0x63/0x1c0
[<c049e660>] ? cgroup_tasks_write+0x90/0x1c0
[<c049d515>] cgroup_file_write+0x1f5/0x230
[<c0842f90>] ? do_page_fault+0x0/0x500
[<c047107b>] ? up_read+0x1b/0x30
[<c0843195>] ? do_page_fault+0x205/0x500
[<c051a8c4>] vfs_write+0xa4/0x1a0
[<c049d320>] ? cgroup_file_write+0x0/0x230
[<c051b3f6>] sys_write+0x46/0x70
[<c0403090>] sysenter_do_call+0x12/0x36
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/