From def4f435808a969ee8b3d742c0a964284e03f9a6 Mon Sep 17 00:00:00 2001 From: "Eric W. Biederman" Date: Wed, 1 Feb 2006 03:06:12 -0800 Subject: [PATCH] --- yaml --- r: 19414 b: refs/heads/master c: 9a5e7339908d7d718ebc4149b77eee06291bdb95 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/alpha/kernel/asm-offsets.c | 1 + trunk/arch/alpha/kernel/entry.S | 16 +++++++++------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 64aa4805ac01..11e75c558a29 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 975b3d3d5b983eb60706d35f0d24cd19f6badabf +refs/heads/master: 9a5e7339908d7d718ebc4149b77eee06291bdb95 diff --git a/trunk/arch/alpha/kernel/asm-offsets.c b/trunk/arch/alpha/kernel/asm-offsets.c index 8f2e5c718b50..6c56c754a0b5 100644 --- a/trunk/arch/alpha/kernel/asm-offsets.c +++ b/trunk/arch/alpha/kernel/asm-offsets.c @@ -28,6 +28,7 @@ void foo(void) DEFINE(TASK_GID, offsetof(struct task_struct, gid)); DEFINE(TASK_EGID, offsetof(struct task_struct, egid)); DEFINE(TASK_REAL_PARENT, offsetof(struct task_struct, real_parent)); + DEFINE(TASK_GROUP_LEADER, offsetof(struct task_struct, group_leader)); DEFINE(TASK_TGID, offsetof(struct task_struct, tgid)); BLANK(); diff --git a/trunk/arch/alpha/kernel/entry.S b/trunk/arch/alpha/kernel/entry.S index e38671c922bc..7af15bf7e5ab 100644 --- a/trunk/arch/alpha/kernel/entry.S +++ b/trunk/arch/alpha/kernel/entry.S @@ -879,17 +879,19 @@ sys_getxpid: /* See linux/kernel/timer.c sys_getppid for discussion about this loop. */ - ldq $3, TASK_REAL_PARENT($2) -1: ldl $1, TASK_TGID($3) + ldq $3, TASK_GROUP_LEADER($2) + ldq $4, TASK_REAL_PARENT($3) + ldl $0, TASK_TGID($2) +1: ldl $1, TASK_TGID($4) #ifdef CONFIG_SMP - mov $3, $4 + mov $4, $5 mb - ldq $3, TASK_REAL_PARENT($2) - cmpeq $3, $4, $4 - beq $4, 1b + ldq $3, TASK_GROUP_LEADER($2) + ldq $4, TASK_REAL_PARENT($3) + cmpeq $4, $5, $5 + beq $5, 1b #endif stq $1, 80($sp) - ldl $0, TASK_TGID($2) ret .end sys_getxpid