lkml.org 
[lkml]   [2011]   [May]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] sched: RCU-protect __set_task_cpu() in set_task_cpu()
From
Date
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@gmail.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.




\
 
 \ /
  Last update: 2011-05-31 21:45    [W:0.101 / U:0.488 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site