mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 21:54:11 +08:00
kgdb: Read buffer overflow
Roel Kluin reported an error found with Parfait. Where we want to ensure that that kgdb_info[-1] never gets accessed. Also check to ensure any negative tid does not exceed the size of the shadow CPU array, else report critical debug context because it is an internal kgdb failure. Reported-by: Roel Kluin <roel.kluin@gmail.com> Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
This commit is contained in:
parent
a5d09d6833
commit
84667d4849
@ -541,12 +541,17 @@ static struct task_struct *getthread(struct pt_regs *regs, int tid)
|
||||
*/
|
||||
if (tid == 0 || tid == -1)
|
||||
tid = -atomic_read(&kgdb_active) - 2;
|
||||
if (tid < 0) {
|
||||
if (tid < -1 && tid > -NR_CPUS - 2) {
|
||||
if (kgdb_info[-tid - 2].task)
|
||||
return kgdb_info[-tid - 2].task;
|
||||
else
|
||||
return idle_task(-tid - 2);
|
||||
}
|
||||
if (tid <= 0) {
|
||||
printk(KERN_ERR "KGDB: Internal thread select error\n");
|
||||
dump_stack();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* find_task_by_pid_ns() does not take the tasklist lock anymore
|
||||
|
Loading…
Reference in New Issue
Block a user