[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1306871146.2497.590.camel@laptop>
Date: Tue, 31 May 2011 21:45:46 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: Sergey Senozhatsky <sergey.senozhatsky@...il.com>
Cc: Ingo Molnar <mingo@...e.hu>,
Andrew Morton <akpm@...ux-foundation.org>,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] sched: RCU-protect __set_task_cpu() in set_task_cpu()
On Tue, 2011-05-31 at 20:26 +0300, Sergey Senozhatsky wrote:
> Wrap __set_task_cpu() with RCU read-side critical section.
> __set_task_cpu() calls task_group() that performs rcu dereference check in
> task_subsys_state_check(), causing:
>
> [ 152.262791] kernel/sched.c:619 invoked rcu_dereference_check() without protection!
> [ 152.262795]
> [ 152.262841] stack backtrace:
> [ 152.262846] Pid: 16, comm: watchdog/1 Not tainted 3.0.0-rc1-dbg-00441-g1d5f9cc-dirty #599
> [ 152.262851] Call Trace:
> [ 152.262860] [<ffffffff8106e17b>] lockdep_rcu_dereference+0xa7/0xaf
> [ 152.262868] [<ffffffff810369f4>] set_task_cpu+0x1ed/0x3ce
> [ 152.262876] [<ffffffff8123a5d7>] ? plist_check_head+0x94/0x98
> [ 152.262883] [<ffffffff8123a72d>] ? plist_del+0x82/0x89
> [ 152.262889] [<ffffffff8102b139>] ? dequeue_task_rt+0x33/0x38
> [ 152.262895] [<ffffffff8102e3ac>] ? dequeue_task+0x82/0x89
> [ 152.262902] [<ffffffff81036fc0>] push_rt_task.part.131+0x1bb/0x247
> [ 152.262909] [<ffffffff81037138>] post_schedule_rt+0x1b/0x24
> [ 152.262918] [<ffffffff81477c1c>] schedule+0x989/0xa9e
> [ 152.262923] [<ffffffff814775e6>] ? schedule+0x353/0xa9e
> [ 152.262931] [<ffffffff8147de58>] ? sub_preempt_count+0x8f/0xa3
> [ 152.262938] [<ffffffff8109fd2c>] ? watchdog_enable+0x195/0x195
> [ 152.262946] [<ffffffff810072e5>] ? native_sched_clock+0x38/0x65
> [ 152.262953] [<ffffffff81062c0c>] ? cpu_clock+0x4a/0x5f
> [ 152.262958] [<ffffffff8109fd2c>] ? watchdog_enable+0x195/0x195
> [ 152.262965] [<ffffffff81071a15>] ? trace_hardirqs_on_caller+0x10d/0x131
> [ 152.262971] [<ffffffff81071a46>] ? trace_hardirqs_on+0xd/0xf
> [ 152.262977] [<ffffffff8109fd2c>] ? watchdog_enable+0x195/0x195
> [ 152.262983] [<ffffffff8109fd94>] watchdog+0x68/0xab
> [ 152.262990] [<ffffffff8105cb82>] kthread+0x9a/0xa2
> [ 152.262999] [<ffffffff81481e24>] kernel_thread_helper+0x4/0x10
> [ 152.263005] [<ffffffff8102d6bf>] ? finish_task_switch+0x76/0xf0
> [ 152.263012] [<ffffffff8147b258>] ? retint_restore_args+0x13/0x13
> [ 152.263019] [<ffffffff8105cae8>] ? __init_kthread_worker+0x53/0x53
> [ 152.263024] [<ffffffff81481e20>] ? gs_change+0x13/0x13
>
>
> Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@...il.com>
Sorry, no. You failed to ask youself, what is it protecting, and how
does wrapping it like this ensure the proper thing is done.
What you've done is basically silence the warning for all set_task_cpu()
callers, without proper consideration.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists