Revision 38860b2c8bb1b92f61396eb06a63adff916fc31d authored by John David Anglin on 08 November 2021, 21:48:16 UTC, committed by Helge Deller on 13 November 2021, 21:10:56 UTC
For years, there have been random segmentation faults in userspace on
SMP PA-RISC machines.  It occurred to me that this might be a problem in
set_pte_at().  MIPS and some other architectures do cache flushes when
installing PTEs with the present bit set.

Here I have adapted the code in update_mmu_cache() to flush the kernel
mapping when the kernel flush is deferred, or when the kernel mapping
may alias with the user mapping.  This simplifies calls to
update_mmu_cache().

I also changed the barrier in set_pte() from a compiler barrier to a
full memory barrier.  I know this change is not sufficient to fix the
problem.  It might not be needed.

I have had a few days of operation with 5.14.16 to 5.15.1 and haven't
seen any random segmentation faults on rp3440 or c8000 so far.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
Signed-off-by: Helge Deller <deller@gmx.de>
Cc: stable@kernel.org # 5.12+
1 parent f0d1cfa
History
File Mode Size
adi
amd
atmel
au1x
bcm
cirrus
codecs
dwc
fsl
generic
hisilicon
img
intel
jz4740
kirkwood
mediatek
meson
mxs
pxa
qcom
rockchip
samsung
sh
sof
spear
sprd
sti
stm
sunxi
tegra
ti
uniphier
ux500
xilinx
xtensa
Kconfig -rw-r--r-- 2.7 KB
Makefile -rw-r--r-- 1.9 KB
soc-ac97.c -rw-r--r-- 10.6 KB
soc-acpi.c -rw-r--r-- 2.9 KB
soc-card.c -rw-r--r-- 4.8 KB
soc-component.c -rw-r--r-- 33.0 KB
soc-compress.c -rw-r--r-- 17.9 KB
soc-core.c -rw-r--r-- 82.4 KB
soc-dai.c -rw-r--r-- 20.6 KB
soc-dapm.c -rw-r--r-- 121.7 KB
soc-devres.c -rw-r--r-- 3.9 KB
soc-generic-dmaengine-pcm.c -rw-r--r-- 13.8 KB
soc-jack.c -rw-r--r-- 11.3 KB
soc-link.c -rw-r--r-- 5.6 KB
soc-ops.c -rw-r--r-- 25.0 KB
soc-pcm.c -rw-r--r-- 75.9 KB
soc-topology-test.c -rw-r--r-- 24.3 KB
soc-topology.c -rw-r--r-- 73.0 KB
soc-utils.c -rw-r--r-- 5.5 KB

back to top