Thread (61 messages) 61 messages, 12 authors, 2022-02-16

Re: [PATCH 08/14] arm64: simplify access_ok()

From: Mark Rutland <hidden>
Date: 2022-02-15 10:39:23
Also in: linux-api, linux-arch, linux-m68k, linux-mips, linux-mm, linux-riscv, linux-s390, linux-sh, linux-um, linuxppc-dev, lkml, sparclinux

On Tue, Feb 15, 2022 at 10:39:46AM +0100, Arnd Bergmann wrote:
On Tue, Feb 15, 2022 at 10:21 AM Ard Biesheuvel [off-list ref] wrote:
quoted
On Tue, 15 Feb 2022 at 10:13, Arnd Bergmann [off-list ref] wrote:

arm64 also has this leading up to the range check, and I think we'd no
longer need it:

    if (IS_ENABLED(CONFIG_ARM64_TAGGED_ADDR_ABI) &&
        (current->flags & PF_KTHREAD || test_thread_flag(TIF_TAGGED_ADDR)))
            addr = untagged_addr(addr);
I suspect the expensive part here is checking the two flags, as untagged_addr()
seems to always just add a sbfx instruction. Would this work?

#ifdef CONFIG_ARM64_TAGGED_ADDR_ABI
#define access_ok(ptr, size) __access_ok(untagged_addr(ptr), (size))
#else // the else path is the default, this can be left out.
#define access_ok(ptr, size) __access_ok((ptr), (size))
#endif
This would be an ABI change, e.g. for tasks without TIF_TAGGED_ADDR.

I don't think we should change this as part of this series.

Thanks,
Mark.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help