https://github.com/torvalds/linux
Revision f3eab7184ddcd4867cf42e3274ba24a66e1e093d authored by Steve Capper on 22 March 2015, 14:51:51 UTC, committed by Catalin Marinas on 24 March 2015, 18:02:55 UTC
this_cpu operations were implemented for arm64 in: 5284e1b arm64: xchg: Implement cmpxchg_double f97fc81 arm64: percpu: Implement this_cpu operations Unfortunately, it is possible for pre-emption to take place between address generation and data access. This can lead to cases where data is being manipulated by this_cpu for a different CPU than it was called on. Which effectively breaks the spec. This patch disables pre-emption for the this_cpu operations guaranteeing that address generation and data manipulation take place without a pre-emption in-between. Fixes: 5284e1b4bc8a ("arm64: xchg: Implement cmpxchg_double") Fixes: f97fc810798c ("arm64: percpu: Implement this_cpu operations") Reported-by: Mark Rutland <mark.rutland@arm.com> Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Steve Capper <steve.capper@linaro.org> [catalin.marinas@arm.com: remove space after type cast] Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
1 parent e53f21b
Tip revision: f3eab7184ddcd4867cf42e3274ba24a66e1e093d authored by Steve Capper on 22 March 2015, 14:51:51 UTC
arm64: percpu: Make this_cpu accessors pre-empt safe
arm64: percpu: Make this_cpu accessors pre-empt safe
Tip revision: f3eab71
File | Mode | Size |
---|---|---|
Kconfig | -rw-r--r-- | 3.2 KB |
Makefile | -rw-r--r-- | 424 bytes |
aops.c | -rw-r--r-- | 52.6 KB |
aops.h | -rw-r--r-- | 3.9 KB |
attrib.c | -rw-r--r-- | 89.7 KB |
attrib.h | -rw-r--r-- | 4.2 KB |
bitmap.c | -rw-r--r-- | 5.5 KB |
bitmap.h | -rw-r--r-- | 3.5 KB |
collate.c | -rw-r--r-- | 3.6 KB |
collate.h | -rw-r--r-- | 1.7 KB |
compress.c | -rw-r--r-- | 29.1 KB |
debug.c | -rw-r--r-- | 4.8 KB |
debug.h | -rw-r--r-- | 2.3 KB |
dir.c | -rw-r--r-- | 51.8 KB |
dir.h | -rw-r--r-- | 1.6 KB |
endian.h | -rw-r--r-- | 2.2 KB |
file.c | -rw-r--r-- | 66.2 KB |
index.c | -rw-r--r-- | 14.8 KB |
index.h | -rw-r--r-- | 5.5 KB |
inode.c | -rw-r--r-- | 96.8 KB |
inode.h | -rw-r--r-- | 11.1 KB |
layout.h | -rw-r--r-- | 97.0 KB |
lcnalloc.c | -rw-r--r-- | 32.4 KB |
lcnalloc.h | -rw-r--r-- | 5.7 KB |
logfile.c | -rw-r--r-- | 28.2 KB |
logfile.h | -rw-r--r-- | 13.5 KB |
malloc.h | -rw-r--r-- | 3.1 KB |
mft.c | -rw-r--r-- | 99.5 KB |
mft.h | -rw-r--r-- | 4.0 KB |
mst.c | -rw-r--r-- | 6.9 KB |
namei.c | -rw-r--r-- | 14.1 KB |
ntfs.h | -rw-r--r-- | 5.0 KB |
quota.c | -rw-r--r-- | 3.6 KB |
quota.h | -rw-r--r-- | 1.2 KB |
runlist.c | -rw-r--r-- | 59.5 KB |
runlist.h | -rw-r--r-- | 3.3 KB |
super.c | -rw-r--r-- | 100.2 KB |
sysctl.c | -rw-r--r-- | 2.3 KB |
sysctl.h | -rw-r--r-- | 1.4 KB |
time.h | -rw-r--r-- | 3.5 KB |
types.h | -rw-r--r-- | 2.0 KB |
unistr.c | -rw-r--r-- | 12.2 KB |
upcase.c | -rw-r--r-- | 3.8 KB |
usnjrnl.c | -rw-r--r-- | 2.7 KB |
usnjrnl.h | -rw-r--r-- | 9.1 KB |
volume.h | -rw-r--r-- | 6.8 KB |
Computing file changes ...