diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/kgdb.c | 7 |
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 |