Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1741786
| From | Josh Poimboeuf <jpoimboe@redhat.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [lkp-robot] [x86/asm] f5caf621ee: PANIC:double_fault |
| Date | 2017-09-28 21:20 +0200 |
| Message-ID | <uuMvM-4ww-11@gated-at.bofh.it> (permalink) |
| References | <uuBTJ-6bp-17@gated-at.bofh.it> <uuJRg-2NO-17@gated-at.bofh.it> <uuKaB-2Wc-1@gated-at.bofh.it> <uuKtX-3hQ-1@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Thu, Sep 28, 2017 at 12:01:21PM -0500, Josh Poimboeuf wrote:
> On Thu, Sep 28, 2017 at 11:44:22AM -0500, Josh Poimboeuf wrote:
> > Agreed, changing it to "unsigned long" and "rsp" will probably fix it.
> >
> > I had made it "unsigned int" because of a clang issue with "unsigned
> > long":
> >
> > CC arch/x86/entry/vdso/vdso32/vclock_gettime.o
> > In file included from arch/x86/entry/vdso/vdso32/vclock_gettime.c:32:
> > In file included from arch/x86/entry/vdso/vdso32/../vclock_gettime.c:15:
> > In file included from ./arch/x86/include/asm/vgtod.h:5:
> > In file included from ./include/linux/clocksource.h:12:
> > In file included from ./include/linux/timex.h:56:
> > In file included from ./include/uapi/linux/timex.h:56:
> > In file included from ./include/linux/time.h:5:
> > In file included from ./include/linux/seqlock.h:35:
> > In file included from ./include/linux/spinlock.h:50:
> > In file included from ./include/linux/preempt.h:10:
> > In file included from ./include/linux/list.h:8:
> > In file included from ./include/linux/kernel.h:10:
> > In file included from ./include/linux/bitops.h:37:
> > In file included from ./arch/x86/include/asm/bitops.h:16:
> > In file included from ./arch/x86/include/asm/alternative.h:9:
> > ./arch/x86/include/asm/asm.h:142:42: error: register 'rsp' unsuitable for global register variables on this target
> > register unsigned long __asm_call_sp asm("rsp");
> >
> > And I think we saw the same error in the realmode code.
> >
> > So we may need to tweak the macro a bit.
>
> Going to try the following patch.
>
> diff --git a/arch/x86/include/asm/asm.h b/arch/x86/include/asm/asm.h
> index c1eadbaf1115..30c3c9ac784a 100644
> --- a/arch/x86/include/asm/asm.h
> +++ b/arch/x86/include/asm/asm.h
> @@ -11,10 +11,12 @@
> # define __ASM_FORM_COMMA(x) " " #x ","
> #endif
>
> -#ifdef CONFIG_X86_32
> +#ifndef __x86_64__
> +/* 32 bit */
> # define __ASM_SEL(a,b) __ASM_FORM(a)
> # define __ASM_SEL_RAW(a,b) __ASM_FORM_RAW(a)
> #else
> +/* 64 bit */
> # define __ASM_SEL(a,b) __ASM_FORM(b)
> # define __ASM_SEL_RAW(a,b) __ASM_FORM_RAW(b)
> #endif
> @@ -139,7 +141,7 @@
> * gets set up by the containing function. If you forget to do this, objtool
> * may print a "call without frame pointer save/setup" warning.
> */
> -register unsigned int __asm_call_sp asm("esp");
> +register unsigned long __asm_call_sp asm(_ASM_SP);
> #define ASM_CALL_CONSTRAINT "+r" (__asm_call_sp)
> #endif
Confirmed that this patch works on both compilers, and fixes GCC 4.4.
GCC 4.4 before:
ffffffff8147461d: 89 e0 mov %esp,%eax
ffffffff8147461f: 4c 89 f7 mov %r14,%rdi
ffffffff81474622: 4c 89 fe mov %r15,%rsi
ffffffff81474625: ba 20 00 00 00 mov $0x20,%edx
ffffffff8147462a: 89 c4 mov %eax,%esp
ffffffff8147462c: e8 bf 52 05 00 callq ffffffff814c98f0 <copy_user_generic_unrolled>
after:
ffffffff8147461e: 48 89 e0 mov %rsp,%rax
ffffffff81474621: 4c 89 f7 mov %r14,%rdi
ffffffff81474624: 4c 89 fe mov %r15,%rsi
ffffffff81474627: ba 20 00 00 00 mov $0x20,%edx
ffffffff8147462c: 48 89 c4 mov %rax,%rsp
ffffffff8147462f: e8 cc 52 05 00 callq ffffffff814c9900 <copy_user_generic_unrolled>
It still has the "back up and restore the stack pointer just for the fun
of it" thing, but at least the corruption is gone.
Will finalize the patch and send it along to tip.
--
Josh
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: [lkp-robot] [x86/asm] f5caf621ee: PANIC:double_fault Linus Torvalds <torvalds@linux-foundation.org> - 2017-09-28 18:30 +0200
Re: [lkp-robot] [x86/asm] f5caf621ee: PANIC:double_fault Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-28 18:50 +0200
Re: [lkp-robot] [x86/asm] f5caf621ee: PANIC:double_fault Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-28 19:10 +0200
Re: [lkp-robot] [x86/asm] f5caf621ee: PANIC:double_fault Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-28 21:20 +0200
[PATCH] x86/asm: Fix inline asm call constraints for GCC 4.4 Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-29 00:00 +0200
Re: [PATCH] x86/asm: Fix inline asm call constraints for GCC 4.4 Linus Torvalds <torvalds@linux-foundation.org> - 2017-09-29 02:00 +0200
Re: [PATCH] x86/asm: Fix inline asm call constraints for GCC 4.4 Josh Poimboeuf <jpoimboe@redhat.com> - 2017-09-29 03:50 +0200
Re: [PATCH] x86/asm: Fix inline asm call constraints for GCC 4.4 Ingo Molnar <mingo@kernel.org> - 2017-09-29 10:10 +0200
Re: [PATCH] x86/asm: Fix inline asm call constraints for GCC 4.4 Ye Xiaolong <xiaolong.ye@intel.com> - 2017-09-29 12:40 +0200
Re: [PATCH] x86/asm: Fix inline asm call constraints for GCC 4.4 Ingo Molnar <mingo@kernel.org> - 2017-09-29 10:00 +0200
Re: [PATCH] x86/asm: Fix inline asm call constraints for GCC 4.4 Arnd Bergmann <arnd@arndb.de> - 2017-09-29 17:30 +0200
[tip:x86/urgent] x86/asm: Fix inline asm call constraints for GCC 4.4 tip-bot for Josh Poimboeuf <tipbot@zytor.com> - 2017-09-29 11:40 +0200
[tip:x86/urgent] x86/asm: Fix inline asm call constraints for GCC 4.4 tip-bot for Josh Poimboeuf <tipbot@zytor.com> - 2017-09-29 13:30 +0200
csiph-web