Revision 597399d0cb91d049fcb78fb45c7694771b583bb7 authored by Will Deacon on 16 October 2019, 04:04:18 UTC, committed by Will Deacon on 16 October 2019, 17:11:38 UTC
Sign-extending TTBR1 addresses when converting to an untagged address breaks the documented POSIX semantics for mlock() in some obscure error cases where we end up returning -EINVAL instead of -ENOMEM as a direct result of rewriting the upper address bits. Rework the untagged_addr() macro to preserve the upper address bits for TTBR1 addresses and only clear the tag bits for user addresses. This matches the behaviour of the 'clear_address_tag' assembly macro, so rename that and align the implementations at the same time so that they use the same instruction sequences for the tag manipulation. Link: https://lore.kernel.org/stable/20191014162651.GF19200@arrakis.emea.arm.com/ Reported-by: Jan Stancek <jstancek@redhat.com> Tested-by: Jan Stancek <jstancek@redhat.com> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Tested-by: Catalin Marinas <catalin.marinas@arm.com> Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Tested-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Reviewed-by: Andrey Konovalov <andreyknvl@google.com> Signed-off-by: Will Deacon <will@kernel.org>
1 parent 3813733
File | Mode | Size |
---|---|---|
Makefile | -rw-r--r-- | 294 bytes |
af_rose.c | -rw-r--r-- | 36.9 KB |
rose_dev.c | -rw-r--r-- | 2.9 KB |
rose_in.c | -rw-r--r-- | 7.3 KB |
rose_link.c | -rw-r--r-- | 6.4 KB |
rose_loopback.c | -rw-r--r-- | 2.7 KB |
rose_out.c | -rw-r--r-- | 2.6 KB |
rose_route.c | -rw-r--r-- | 30.4 KB |
rose_subr.c | -rw-r--r-- | 12.1 KB |
rose_timer.c | -rw-r--r-- | 4.5 KB |
sysctl_net_rose.c | -rw-r--r-- | 3.1 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...