|
@@ -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 **)¤t->cred)
|
|
|
|
|
|
/**
|
|
|
* __task_cred - Access a task's objective credentials
|
|
@@ -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; \
|
|
|
})
|
|
@@ -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; \
|
|
|
})
|
|
@@ -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))
|