Hi Amit,
Two more questions below...
----- Original Message -----
> But here's where I'm confused: when an in-kernel
exception frame occurs, and the
> processor lays down the full register set on the stack, are both the PC and LR
(regs[30])
> text values written on the stack as obfuscated values?
>
In arm64 case arch/arm64/include/asm/kexec.h + crash_setup_regs()
function sets up the kernel exception frame. As can be seen PC does not
have obfuscated (PAC) values but LR can be obfuscated.
Ok, so that's when it's setting up the registers for a kexec/kdump operation.
But what about exceptions that occur during the normal course of events, such as
when an interrupt or page fault occurs?
> ...
>
> When it gathers the starting hooks for non-active tasks, it does this:
>
> static int
> arm64_get_stackframe(struct bt_info *bt, struct arm64_stackframe
*frame)crash_setup_regs
> {
> if (!fill_task_struct(bt->task))
> return FALSE;
>
> frame->sp = ULONG(tt->task_struct +
OFFSET(task_struct_thread_context_sp));
> frame->pc = ULONG(tt->task_struct +
OFFSET(task_struct_thread_context_pc));
> frame->fp = ULONG(tt->task_struct +
OFFSET(task_struct_thread_context_fp));
>
> return TRUE;
> }
>
> When a task is put to sleep, is the PC text address in the task's
thread_struct.cpu_context
> obfuscated?
And again, what happens in this case?
Thanks,
Dave