diff options
author | Will Deacon <will.deacon@arm.com> | 2015-11-18 10:13:08 (GMT) |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2015-11-18 18:06:43 (GMT) |
commit | c139aa60c1007429335131167a0ca181e38c5668 (patch) | |
tree | f4ab14648498f179be80c4b3091fbfc913bac074 /mm/mlock.c | |
parent | 0b2aa5b80bbf4d0fb5daa1fb83ff637daa12d552 (diff) | |
download | linux-c139aa60c1007429335131167a0ca181e38c5668.tar.xz |
arm64: barriers: fix smp_load_acquire to work with const arguments
A newly introduced function in include/net/sock.h passes a const
argument to smp_load_acquire:
static inline int sk_state_load(const struct sock *sk)
{
return smp_load_acquire(&sk->sk_state);
}
This cause an allmodconfig build failure, since our underlying
load-acquire implementation does not handle const types correctly:
include/net/sock.h: In function 'sk_state_load':
./arch/arm64/include/asm/barrier.h:71:3: error: read-only variable '___p1' used as 'asm' output
asm volatile ("ldarb %w0, %1" \
This patch fixes the problem by reusing the trick in READ_ONCE that
loads via a non-const member of an anonymous union. This has the
advantage of allowing us to use smp_load_acquire on packed structures
(e.g. arch_spinlock_t) as well as primitive types.
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: David Daney <david.daney@cavium.com>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Reported-by: Arnd Bergmann <arnd@arndb.de>
Reported-by: David Daney <david.daney@cavium.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'mm/mlock.c')
0 files changed, 0 insertions, 0 deletions