All of lore.kernel.org
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: Al Viro <viro@zeniv.linux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [RFC][PATCH 5/7] x86: convert arch_futex_atomic_op_inuser() to user_access_begin/user_access_end()
Date: Tue, 24 Mar 2020 09:19:15 -0700	[thread overview]
Message-ID: <CAHk-=whTwaUZZ5Aj_Viapf2tdvcd65WdM4jjXJ3tdOTDmgkW0g@mail.gmail.com> (raw)
In-Reply-To: <20200324020846.GG23230@ZenIV.linux.org.uk>

On Mon, Mar 23, 2020 at 7:08 PM Al Viro <viro@zeniv.linux.org.uk> wrote:
>
> > And wouldn't it be lovely to get rid of the error return thing, and
> > pass in a label instead, the way "usafe_get/put_user()" works too?
> > That might be a separate patch from the "reorg" thing, though.
>
> OK, ret wouldn't be in the list of outputs that way and
> *uaddr could become an input (we only care about the address,
> same as for put_user), but oldval is a genuine output -

Yes, initially we'd have to do the "jump to label" inside the macro,
because gcc doesn't support asm goto with outputs.

But that's no different from "unsafe_get_user()". We still pass it a
label, even though we can't use it in the inline asm.

Yet.

I have patches to make it work with newer versions of clang, and I
hope that gcc will eventually also accept the semantics of "asm goto
with outputs only has the output on the fallthrough".

So _currently_ it would be only syntactic sugar: moving the error
handling inside the macro, and making it syntactically match
unsafe_get_user().

But long term is would allow us to generate better code too.

                Linus

  reply	other threads:[~2020-03-24 16:19 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-23 18:50 [RFC][PATCHSET] futex uaccess cleanups Al Viro
2020-03-23 18:51 ` [RFC][PATCH 1/7] futex: arch_futex_atomic_op_inuser() calling conventions change Al Viro
2020-03-23 18:51   ` [RFC][PATCH 2/7] sh: no need of access_ok() in arch_futex_atomic_op_inuser() Al Viro
2020-03-23 18:51   ` [RFC][PATCH 3/7] [parisc, s390, sparc64] no need for access_ok() in futex handling Al Viro
2020-03-23 18:51   ` [RFC][PATCH 4/7] objtool: whitelist __sanitizer_cov_trace_switch() Al Viro
2020-03-23 18:51   ` [RFC][PATCH 5/7] x86: convert arch_futex_atomic_op_inuser() to user_access_begin/user_access_end() Al Viro
2020-03-23 19:06     ` Linus Torvalds
2020-03-24  2:08       ` Al Viro
2020-03-24 16:19         ` Linus Torvalds [this message]
2020-03-24 20:42           ` Al Viro
2020-03-24 20:57             ` Linus Torvalds
2020-03-27  2:42               ` Al Viro
2020-03-27  3:42                 ` Linus Torvalds
2020-03-27  3:49                   ` Linus Torvalds
2020-03-27  4:03                     ` Linus Torvalds
2020-03-27  4:35                       ` Josh Poimboeuf
2020-03-23 18:51   ` [RFC][PATCH 6/7] generic arch_futex_atomic_op_inuser() doesn't need access_ok() Al Viro
2020-03-23 18:51   ` [RFC][PATCH 7/7] x86: get rid of user_atomic_cmpxchg_inatomic() Al Viro

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='CAHk-=whTwaUZZ5Aj_Viapf2tdvcd65WdM4jjXJ3tdOTDmgkW0g@mail.gmail.com' \
    --to=torvalds@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=viro@zeniv.linux.org.uk \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.