summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Blanchard <anton@samba.org>2003-02-11 07:56:04 +1100
committerAnton Blanchard <anton@samba.org>2003-02-11 07:56:04 +1100
commit4da38fc749733fb517a06fea6d3923724177f4bf (patch)
treebb614f365c5137666812a0f79b3bb7d0c21d68c7
parent90a252f2c840063a39929a05a88c88a74ba360bf (diff)
parent28a59cb02a6b97cb27e914687c0346c608abd110 (diff)
Merge samba.org:/scratch/anton/linux-2.5
into samba.org:/scratch/anton/sfr
-rw-r--r--arch/i386/kernel/traps.c6
-rw-r--r--fs/proc/array.c4
-rw-r--r--kernel/exit.c2
-rw-r--r--kernel/sched.c2
4 files changed, 9 insertions, 5 deletions
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c
index 81a09464e4d7..234ced527110 100644
--- a/arch/i386/kernel/traps.c
+++ b/arch/i386/kernel/traps.c
@@ -514,6 +514,10 @@ asmlinkage void do_debug(struct pt_regs * regs, long error_code)
__asm__ __volatile__("movl %%db6,%0" : "=r" (condition));
+ /* It's safe to allow irq's after DR6 has been saved */
+ if (regs->eflags & X86_EFLAGS_IF)
+ local_irq_enable();
+
/* Mask out spurious debug traps due to lazy DR7 setting */
if (condition & (DR_TRAP0|DR_TRAP1|DR_TRAP2|DR_TRAP3)) {
if (!tsk->thread.debugreg[7])
@@ -831,7 +835,7 @@ void __init trap_init(void)
#endif
set_trap_gate(0,&divide_error);
- set_trap_gate(1,&debug);
+ set_intr_gate(1,&debug);
set_intr_gate(2,&nmi);
set_system_gate(3,&int3); /* int3-5 can be called from all */
set_system_gate(4,&overflow);
diff --git a/fs/proc/array.c b/fs/proc/array.c
index df1501a0f332..5fe9bffbc8af 100644
--- a/fs/proc/array.c
+++ b/fs/proc/array.c
@@ -126,8 +126,8 @@ static const char *task_state_array[] = {
"R (running)", /* 0 */
"S (sleeping)", /* 1 */
"D (disk sleep)", /* 2 */
- "T (stopped)", /* 8 */
- "Z (zombie)", /* 4 */
+ "T (stopped)", /* 4 */
+ "Z (zombie)", /* 8 */
"X (dead)" /* 16 */
};
diff --git a/kernel/exit.c b/kernel/exit.c
index fbc00cfae030..98188558e3cf 100644
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -781,7 +781,7 @@ do_group_exit(int exit_code)
* wait4()-ing process will get the correct exit code - even if this
* thread is not the thread group leader.
*/
-asmlinkage long sys_exit_group(int error_code)
+asmlinkage void sys_exit_group(int error_code)
{
do_group_exit((error_code & 0xff) << 8);
}
diff --git a/kernel/sched.c b/kernel/sched.c
index 3e072580a244..68bd00e54a81 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -2037,7 +2037,7 @@ static void show_task(task_t * p)
unsigned long free = 0;
task_t *relative;
int state;
- static const char * stat_nam[] = { "R", "S", "D", "Z", "T", "W" };
+ static const char * stat_nam[] = { "R", "S", "D", "T", "Z", "W" };
printk("%-13.13s ", p->comm);
state = p->state ? __ffs(p->state) + 1 : 0;