diff options
author | David Howells <dhowells@redhat.com> | 2008-11-13 18:39:16 -0500 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2008-11-13 18:39:16 -0500 |
commit | b6dff3ec5e116e3af6f537d4caedcad6b9e5082a (patch) | |
tree | 9e76f972eb7ce9b84e0146c8e4126a3f86acb428 /arch/alpha | |
parent | 15a2460ed0af7538ca8e6c610fe607a2cd9da142 (diff) |
CRED: Separate task security context from task_struct
Separate the task security context from task_struct. At this point, the
security data is temporarily embedded in the task_struct with two pointers
pointing to it.
Note that the Alpha arch is altered as it refers to (E)UID and (E)GID in
entry.S via asm-offsets.
With comment fixes Signed-off-by: Marc Dionne <marc.c.dionne@gmail.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: James Morris <jmorris@namei.org>
Acked-by: Serge Hallyn <serue@us.ibm.com>
Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'arch/alpha')
-rw-r--r-- | arch/alpha/kernel/asm-offsets.c | 11 | ||||
-rw-r--r-- | arch/alpha/kernel/entry.S | 10 |
2 files changed, 13 insertions, 8 deletions
diff --git a/arch/alpha/kernel/asm-offsets.c b/arch/alpha/kernel/asm-offsets.c index 4b18cd94d59d..6ff8886e7e22 100644 --- a/arch/alpha/kernel/asm-offsets.c +++ b/arch/alpha/kernel/asm-offsets.c | |||
@@ -19,15 +19,18 @@ void foo(void) | |||
19 | BLANK(); | 19 | BLANK(); |
20 | 20 | ||
21 | DEFINE(TASK_BLOCKED, offsetof(struct task_struct, blocked)); | 21 | DEFINE(TASK_BLOCKED, offsetof(struct task_struct, blocked)); |
22 | DEFINE(TASK_UID, offsetof(struct task_struct, uid)); | 22 | DEFINE(TASK_CRED, offsetof(struct task_struct, cred)); |
23 | DEFINE(TASK_EUID, offsetof(struct task_struct, euid)); | ||
24 | DEFINE(TASK_GID, offsetof(struct task_struct, gid)); | ||
25 | DEFINE(TASK_EGID, offsetof(struct task_struct, egid)); | ||
26 | DEFINE(TASK_REAL_PARENT, offsetof(struct task_struct, real_parent)); | 23 | DEFINE(TASK_REAL_PARENT, offsetof(struct task_struct, real_parent)); |
27 | DEFINE(TASK_GROUP_LEADER, offsetof(struct task_struct, group_leader)); | 24 | DEFINE(TASK_GROUP_LEADER, offsetof(struct task_struct, group_leader)); |
28 | DEFINE(TASK_TGID, offsetof(struct task_struct, tgid)); | 25 | DEFINE(TASK_TGID, offsetof(struct task_struct, tgid)); |
29 | BLANK(); | 26 | BLANK(); |
30 | 27 | ||
28 | DEFINE(CRED_UID, offsetof(struct cred, uid)); | ||
29 | DEFINE(CRED_EUID, offsetof(struct cred, euid)); | ||
30 | DEFINE(CRED_GID, offsetof(struct cred, gid)); | ||
31 | DEFINE(CRED_EGID, offsetof(struct cred, egid)); | ||
32 | BLANK(); | ||
33 | |||
31 | DEFINE(SIZEOF_PT_REGS, sizeof(struct pt_regs)); | 34 | DEFINE(SIZEOF_PT_REGS, sizeof(struct pt_regs)); |
32 | DEFINE(PT_PTRACED, PT_PTRACED); | 35 | DEFINE(PT_PTRACED, PT_PTRACED); |
33 | DEFINE(CLONE_VM, CLONE_VM); | 36 | DEFINE(CLONE_VM, CLONE_VM); |
diff --git a/arch/alpha/kernel/entry.S b/arch/alpha/kernel/entry.S index 5fc61e281ac7..f77345bc66a9 100644 --- a/arch/alpha/kernel/entry.S +++ b/arch/alpha/kernel/entry.S | |||
@@ -850,8 +850,9 @@ osf_getpriority: | |||
850 | sys_getxuid: | 850 | sys_getxuid: |
851 | .prologue 0 | 851 | .prologue 0 |
852 | ldq $2, TI_TASK($8) | 852 | ldq $2, TI_TASK($8) |
853 | ldl $0, TASK_UID($2) | 853 | ldq $3, TASK_CRED($2) |
854 | ldl $1, TASK_EUID($2) | 854 | ldl $0, CRED_UID($3) |
855 | ldl $1, CRED_EUID($3) | ||
855 | stq $1, 80($sp) | 856 | stq $1, 80($sp) |
856 | ret | 857 | ret |
857 | .end sys_getxuid | 858 | .end sys_getxuid |
@@ -862,8 +863,9 @@ sys_getxuid: | |||
862 | sys_getxgid: | 863 | sys_getxgid: |
863 | .prologue 0 | 864 | .prologue 0 |
864 | ldq $2, TI_TASK($8) | 865 | ldq $2, TI_TASK($8) |
865 | ldl $0, TASK_GID($2) | 866 | ldq $3, TASK_CRED($2) |
866 | ldl $1, TASK_EGID($2) | 867 | ldl $0, CRED_GID($3) |
868 | ldl $1, CRED_EGID($3) | ||
867 | stq $1, 80($sp) | 869 | stq $1, 80($sp) |
868 | ret | 870 | ret |
869 | .end sys_getxgid | 871 | .end sys_getxgid |