unprivileged use of MSR_SE
Roland McGrath
roland at redhat.com
Thu Mar 20 11:24:07 EST 2008
Are there any powerpc instructions that can read or change the MSR
explicitly from user mode? Any that can see or affect the MSR_SE bit?
e.g. x86 has pushf/popf unprivileged instructions, with which a user
program can both see the single-step flag set, and enable single-step for
its own next instruction (presumably when it has a handler for SIGTRAP).
This actually gets used in arcane places.
I recall being told before there's no unprivileged way to see or touch
MSR_SE. But it looks to me like a user program can set the bit in a
sigcontext and sigreturn to set it. Is that intentionally supported?
Or could sigreturn ignore the MSR_SE bit without breaking any strange user?
On x86 do we some machinations so that PTRACE_GETREGS et al show the
single-step bit set if user-mode itself had set it, but not if
PTRACE_SINGLESTEP set it. If you use PTRACE_SETREGS et al to set the
single-step bit, then it stays set even if you use PTRACE_CONT.
I'd like to clean this up for powerpc too. If there is no way at all for
user-mode to set MSR_SE, then it doesn't much matter whether it shows up
when ptrace reads it--ptrace just needs to ignore attempts to set it. So
if there's no reason not to, what I would do is remove MSR_SE from the
MSR_DEBUGCHANGE mask and make sigreturn always clear MSR_SE.
Does that make sense?
Thanks,
Roland
More information about the Linuxppc-dev
mailing list