On Thu, Sep 3, 2020 at 9:21 AM Yu, Yu-cheng <yu-cheng.yu@xxxxxxxxx> wrote: > > On 9/3/2020 9:11 AM, Dave Hansen wrote: > > On 9/3/20 9:09 AM, Yu, Yu-cheng wrote: > >> If the debugger is going to write an MSR, only in the third case would > >> this make a slight sense. For example, if the system has CET enabled, > >> but the task does not have CET enabled, and GDB is writing to a CET MSR. > >> But still, this is strange to me. > > > > If this is strange, then why do we even _implement_ writes? > > > > For example, if the task has CET enabled, and it is in a control > protection fault, the debugger can clear the task's IBT state, or unwind > the shadow stack, etc. But if the task does not have CET enabled (its > CET MSRs are in INIT state), it would make sense for the PTRACE call to > return failure than doing something else, right? What do you mean "something else"? I assume that, if GDB tells ptrace() to write some value to the CET MSR, then it should get that value. If GDB writes to it on a task that is not currently using CET, I don't see why it should fail. --Andy