lkml.org 
[lkml]   [2014]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subject[PATCH 0/3] introduce task_rcu_dereference()
Peter, let me repeat once again, if you still prefer to avoid
probe_slab_address() and use SLAB_DESTROY_BY_RCU I won't argue.

I do not like SLAB_DESTROY_BY_RCU in this particular case. With
or without SDBR rq->curr can be reused and we need to avoid this
race. The fact that with SDBR it can be reused only as another
instance of task_struct is absolutely immaterial imo.

Not to mention that SDBR still adds some overhead while probe_slab()
is free unless CONFIG_DEBUG_PAGEALLOC, but this option adds a large
slowdown anyway.

However, my arguments against SDBR are not strictly technical, and
I think that this falls into "maintainer is always right" category.

So please tell me if you prefer v2 with SDBR. In this case 2/3 is
not needed, and 3/3 can simply read ->sighand. Otherwise the code
(and even the comments) will be the same.

Compared to the draft patch I sent before

- update the comments

- do not use ERR_PTR(), just return the task or NULL, so
kernel/sched/ doesn't need another helper.

This means that task_rcu_dereference() does retry itself.
We can add __task_rcu_dereference() if we have another
which do not need/want to retry.

Oleg.

include/linux/sched.h | 1 +
include/linux/uaccess.h | 30 +++++++++++++++-------------
kernel/exit.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++
mm/slub.c | 6 +----
4 files changed, 67 insertions(+), 19 deletions(-)



\
 
 \ /
  Last update: 2014-10-27 20:41    [W:0.362 / U:0.020 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site