]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
s390/traps: Cleanup get_user() handling in illegal_op()
authorHeiko Carstens <hca@linux.ibm.com>
Wed, 26 Feb 2025 10:03:04 +0000 (11:03 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 4 Mar 2025 16:34:03 +0000 (17:34 +0100)
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>
arch/s390/kernel/traps.c

index 6db2c14665314a5305e94bee71218ef5854d1fc6..478c5871aefaf80740e3ad532de56e3bbe19ba70 100644 (file)
@@ -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