Skip to content

Commit

Permalink
fix rcu annotations noise in cred.h
Browse files Browse the repository at this point in the history
task->cred is declared as __rcu, and access to other tasks' ->cred is,
indeed, protected.  Access to current->cred does not need rcu_dereference()
at all, since only the task itself can change its ->cred.  sparse, of
course, has no way of knowing that...

Add force-cast in current_cred(), make current_fsuid() et.al. use it.

Signed-off-by: Al Viro <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Al Viro authored and torvalds committed Aug 7, 2011
1 parent 7813b94 commit 3295514
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions include/linux/cred.h
Original file line number Diff line number Diff line change
Expand Up @@ -265,10 +265,11 @@ static inline void put_cred(const struct cred *_cred)
/**
* current_cred - Access the current task's subjective credentials
*
* Access the subjective credentials of the current task.
* Access the subjective credentials of the current task. RCU-safe,
* since nobody else can modify it.
*/
#define current_cred() \
(current->cred)
(*(__force struct cred **)&current->cred)

/**
* __task_cred - Access a task's objective credentials
Expand Down Expand Up @@ -307,7 +308,7 @@ static inline void put_cred(const struct cred *_cred)
({ \
struct user_struct *__u; \
struct cred *__cred; \
__cred = (struct cred *) current_cred(); \
__cred = current_cred(); \
__u = get_uid(__cred->user); \
__u; \
})
Expand All @@ -322,7 +323,7 @@ static inline void put_cred(const struct cred *_cred)
({ \
struct group_info *__groups; \
struct cred *__cred; \
__cred = (struct cred *) current_cred(); \
__cred = current_cred(); \
__groups = get_group_info(__cred->group_info); \
__groups; \
})
Expand All @@ -341,7 +342,7 @@ static inline void put_cred(const struct cred *_cred)

#define current_cred_xxx(xxx) \
({ \
current->cred->xxx; \
current_cred()->xxx; \
})

#define current_uid() (current_cred_xxx(uid))
Expand Down

0 comments on commit 3295514

Please sign in to comment.