s390/traps: Cleanup get_user() handling in illegal_op()
The usage of get_user() in illegal_op() is quite unusual. Make the code more readable and get rid of unnecessary casts. The generated code is identical before/after this change. Reviewed-by: Sven Schnelle <svens@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
9ef496ddf9
commit
e9df614dad
|
|
@ -154,23 +154,23 @@ static void translation_specification_exception(struct pt_regs *regs)
|
|||
|
||||
static void illegal_op(struct pt_regs *regs)
|
||||
{
|
||||
__u8 opcode[6];
|
||||
__u16 __user *location;
|
||||
int is_uprobe_insn = 0;
|
||||
u16 __user *location;
|
||||
int signal = 0;
|
||||
u16 opcode;
|
||||
|
||||
location = get_trap_ip(regs);
|
||||
|
||||
if (user_mode(regs)) {
|
||||
if (get_user(*((__u16 *) opcode), (__u16 __user *) location))
|
||||
if (get_user(opcode, location))
|
||||
return;
|
||||
if (*((__u16 *) opcode) == S390_BREAKPOINT_U16) {
|
||||
if (opcode == S390_BREAKPOINT_U16) {
|
||||
if (current->ptrace)
|
||||
force_sig_fault(SIGTRAP, TRAP_BRKPT, location);
|
||||
else
|
||||
signal = SIGILL;
|
||||
#ifdef CONFIG_UPROBES
|
||||
} else if (*((__u16 *) opcode) == UPROBE_SWBP_INSN) {
|
||||
} else if (opcode == UPROBE_SWBP_INSN) {
|
||||
is_uprobe_insn = 1;
|
||||
#endif
|
||||
} else
|
||||
|
|
|
|||
Loading…
Reference in New Issue