Commit 9f155b9802bb7049cd0f216c3fe903b58620df11
Committed by
Linus Torvalds
1 parent
29552b1462
Exists in
master
and in
4 other branches
[PATCH] i386: PTRACE_POKEUSR: allow changing RF bit in EFLAGS register.
Setting RF (resume flag) allows a debugger to resume execution after a code breakpoint without tripping the breakpoint again. It is reset by the CPU after execution of one instruction. Requested by Stephane Eranian: "I am trying to the user HW debug registers on i386 and I am running into a problem with ptrace() not allowing access to EFLAGS_RF for POKEUSER (see FLAG_MASK). [ ... ] It avoids the need to remove the breakpoint, single step, and reinstall. The equivalent functionality exists on IA-64 and is allowed by ptrace()" Cc: Stephane Eranian <eranian@hpl.hp.com> Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 1 changed file with 6 additions and 3 deletions Side-by-side Diff
arch/i386/kernel/ptrace.c
| ... | ... | @@ -32,9 +32,12 @@ |
| 32 | 32 | * in exit.c or in signal.c. |
| 33 | 33 | */ |
| 34 | 34 | |
| 35 | -/* determines which flags the user has access to. */ | |
| 36 | -/* 1 = access 0 = no access */ | |
| 37 | -#define FLAG_MASK 0x00044dd5 | |
| 35 | +/* | |
| 36 | + * Determines which flags the user has access to [1 = access, 0 = no access]. | |
| 37 | + * Prohibits changing ID(21), VIP(20), VIF(19), VM(17), IOPL(12-13), IF(9). | |
| 38 | + * Also masks reserved bits (31-22, 15, 5, 3, 1). | |
| 39 | + */ | |
| 40 | +#define FLAG_MASK 0x00054dd5 | |
| 38 | 41 | |
| 39 | 42 | /* set's the trap flag. */ |
| 40 | 43 | #define TRAP_FLAG 0x100 |