From: Roland McGrath <roland@redhat.com>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Ingo Molnar <mingo@elte.hu>,
Christoph Hellwig <hch@infradead.org>,
Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>,
Vitaly Mayatskikh <v.mayatskih@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: Q: put_user_try & co (Was: [PATCH 1/5] Split wait_noreap_copyout())
Date: Wed, 20 May 2009 13:11:27 -0700 (PDT) [thread overview]
Message-ID: <20090520201127.48B54FC38D@magilla.sf.frob.com> (raw)
In-Reply-To: Oleg Nesterov's message of Wednesday, 20 May 2009 21:03:12 +0200 <20090520190312.GA32333@redhat.com>
> #define __put_user_asm_ex(...) \
> asm volatile( \
> "1: mov ..." \
> _ASM_EXTABLE(1b, &__efault_label) \
> : : ...)
You mean &&__efault_label here (it's a funny syntax, but that's how it is).
&&label is a GCC extension that I'm not sure the kernel has used before.
I think it can be touchy to have an asm jump into compiled code that way.
e.g., perhaps the compiler produced:
mov reg, 40(sp)
mov $123, reg
#APP
... inside of your asm ...
#NO_APP
mov 40(sp), reg
or some such thing. If you jump away from inside the asm, you won't ever
do "mov 40(sp), reg". But the compiler might think that reg has its
original value at the __efault_label: code location.
Perhaps more important than any particular compiler-confusion scenario we
can come up with is simply that this would be an obscure corner of code
generation in the compiler that the kernel has not evoked before. There
might be bugs or oddities in various compilers of various vintages, that
we don't know about because they never came up before.
Thanks,
Roland
next prev parent reply other threads:[~2009-05-20 20:12 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-11 10:12 [PATCH 0/5] wait_task_* cleanups Vitaly Mayatskikh
2009-05-11 10:12 ` [PATCH 1/5] Split wait_noreap_copyout() Vitaly Mayatskikh
2009-05-11 10:20 ` Ingo Molnar
2009-05-11 11:20 ` Vitaly Mayatskikh
2009-05-11 12:04 ` Christoph Hellwig
2009-05-11 12:17 ` Ingo Molnar
2009-05-11 20:47 ` Vitaly Mayatskikh
2009-05-11 21:04 ` Ingo Molnar
2009-05-20 19:03 ` Q: put_user_try & co (Was: [PATCH 1/5] Split wait_noreap_copyout()) Oleg Nesterov
2009-05-20 20:11 ` Roland McGrath [this message]
2009-05-20 20:56 ` H. Peter Anvin
2009-05-21 13:42 ` Oleg Nesterov
2009-05-20 21:14 ` Andreas Schwab
2009-05-11 12:17 ` [PATCH 1/5] Split wait_noreap_copyout() Vitaly Mayatskikh
2009-05-11 10:12 ` [PATCH 2/5] Use wait_copyout() in wait_task_stopped() Vitaly Mayatskikh
2009-05-11 10:12 ` [PATCH 3/5] Use wait_copyout() in do_wait() Vitaly Mayatskikh
2009-05-11 10:12 ` [PATCH 4/5] Use wait_copyout() in wait_task_zombie() Vitaly Mayatskikh
2009-05-11 10:12 ` [PATCH 5/5] Use wait_copyout() in wait_task_continued() Vitaly Mayatskikh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090520201127.48B54FC38D@magilla.sf.frob.com \
--to=roland@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=h-shimamoto@ct.jp.nec.com \
--cc=hch@infradead.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=oleg@redhat.com \
--cc=tglx@linutronix.de \
--cc=v.mayatskih@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®