Messages in this thread Patch in this message | | | Date | Tue, 20 Sep 2011 16:39:59 +0200 | From | Oleg Nesterov <> | Subject | [PATCH 2/2] creds: __task_cred(current) doesn't need rcu_read_lock_held() |
| |
Change __task_cred(task) to accept "task == current" without rcu_read_lock_held(). This is what current_cred() currently does, and with this change __task_cred() becomes more flexible/usable.
Signed-off-by: Oleg Nesterov <oleg@redhat.com> ---
include/linux/cred.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
--- 3.1/include/linux/cred.h~2_task_cred_ck_current 2011-09-20 16:28:47.000000000 +0200 +++ 3.1/include/linux/cred.h 2011-09-20 16:33:12.000000000 +0200 @@ -268,8 +268,7 @@ static inline void put_cred(const struct * Access the subjective credentials of the current task. RCU-safe, * since nobody else can modify it. */ -#define current_cred() \ - rcu_dereference_protected(current->cred, 1) +#define current_cred() __task_cred(current) /** * __task_cred - Access a task's objective credentials @@ -284,7 +283,7 @@ static inline void put_cred(const struct #define __task_cred(task) \ ({ \ const struct task_struct *__t = (task); \ - rcu_dereference_check(__t->real_cred, 0); \ + rcu_dereference_check(__t->real_cred, (__t == current));\ }) /**
| |