|
@@ -521,7 +521,13 @@ static int ptrace_read_user(struct task_struct *tsk, unsigned long off,
|
|
|
return -EIO;
|
|
|
|
|
|
tmp = 0;
|
|
|
- if (off < sizeof(struct pt_regs))
|
|
|
+ if (off == PT_TEXT_ADDR)
|
|
|
+ tmp = tsk->mm->start_code;
|
|
|
+ else if (off == PT_DATA_ADDR)
|
|
|
+ tmp = tsk->mm->start_data;
|
|
|
+ else if (off == PT_TEXT_END_ADDR)
|
|
|
+ tmp = tsk->mm->end_code;
|
|
|
+ else if (off < sizeof(struct pt_regs))
|
|
|
tmp = get_user_reg(tsk, off >> 2);
|
|
|
|
|
|
return put_user(tmp, ret);
|