aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kgdb.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/kernel/kgdb.c b/kernel/kgdb.c
index 7d7014634022..29357a9ccfb2 100644
--- a/kernel/kgdb.c
+++ b/kernel/kgdb.c
@@ -541,12 +541,17 @@ static struct task_struct *getthread(struct pt_regs *regs, int tid)
541 */ 541 */
542 if (tid == 0 || tid == -1) 542 if (tid == 0 || tid == -1)
543 tid = -atomic_read(&kgdb_active) - 2; 543 tid = -atomic_read(&kgdb_active) - 2;
544 if (tid < 0) { 544 if (tid < -1 && tid > -NR_CPUS - 2) {
545 if (kgdb_info[-tid - 2].task) 545 if (kgdb_info[-tid - 2].task)
546 return kgdb_info[-tid - 2].task; 546 return kgdb_info[-tid - 2].task;
547 else 547 else
548 return idle_task(-tid - 2); 548 return idle_task(-tid - 2);
549 } 549 }
550 if (tid <= 0) {
551 printk(KERN_ERR "KGDB: Internal thread select error\n");
552 dump_stack();
553 return NULL;
554 }
550 555
551 /* 556 /*
552 * find_task_by_pid_ns() does not take the tasklist lock anymore 557 * find_task_by_pid_ns() does not take the tasklist lock anymore