RESTORE_EXTRA_REGS
 
        testl $3,CS(%rsp)                       # from kernel_thread?
-       jz   1f
 
        /*
         * By the time we get here, we have no idea whether our pt_regs,
         * ti flags, and ti status came from the 64-bit SYSCALL fast path,
         * the slow path, or one of the ia32entry paths.
-        * Use int_ret_from_sys_call to return, since it can safely handle
+        * Use IRET code path to return, since it can safely handle
         * all of the above.
         */
-       jmp  int_ret_from_sys_call
+       jnz     int_ret_from_sys_call
 
-1:
+       /* We came from kernel_thread */
+       /* nb: we depend on RESTORE_EXTRA_REGS above */
        movq %rbp, %rdi
        call *%rbx
        movl $0, RAX(%rsp)