Revision 9dfb3b8d655022760ca68af11821f1c63aa547c3 authored by Matthew Wilcox (Oracle) on 30 July 2022, 04:25:18 UTC, committed by Andrew Morton on 28 August 2022, 21:02:43 UTC
If we allocate a new page, we need to make sure that our folio matches
that new page.

If we do end up in this code path, we store the wrong page in the shmem
inode's page cache, and I would rather imagine that data corruption
ensues.

This will be solved by changing shmem_replace_page() to
shmem_replace_folio(), but this is the minimal fix.

Link: https://lkml.kernel.org/r/20220730042518.1264767-1-willy@infradead.org
Fixes: da08e9b79323 ("mm/shmem: convert shmem_swapin_page() to shmem_swapin_folio()")
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: William Kucharski <william.kucharski@oracle.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
1 parent ab74ef7
History
File Mode Size
bpf
cgroup
configs
debug
dma
entry
events
futex
gcov
irq
kcsan
livepatch
locking
module
power
printk
rcu
sched
time
trace
.gitignore -rw-r--r-- 67 bytes
Kconfig.freezer -rw-r--r-- 92 bytes
Kconfig.hz -rw-r--r-- 1.7 KB
Kconfig.locks -rw-r--r-- 4.9 KB
Kconfig.preempt -rw-r--r-- 4.8 KB
Makefile -rw-r--r-- 5.1 KB
acct.c -rw-r--r-- 15.8 KB
async.c -rw-r--r-- 9.2 KB
audit.c -rw-r--r-- 64.8 KB
audit.h -rw-r--r-- 10.7 KB
audit_fsnotify.c -rw-r--r-- 5.3 KB
audit_tree.c -rw-r--r-- 25.6 KB
audit_watch.c -rw-r--r-- 13.7 KB
auditfilter.c -rw-r--r-- 34.4 KB
auditsc.c -rw-r--r-- 80.8 KB
backtracetest.c -rw-r--r-- 1.9 KB
bounds.c -rw-r--r-- 751 bytes
capability.c -rw-r--r-- 14.8 KB
cfi.c -rw-r--r-- 8.2 KB
compat.c -rw-r--r-- 6.8 KB
configs.c -rw-r--r-- 2.0 KB
context_tracking.c -rw-r--r-- 23.2 KB
cpu.c -rw-r--r-- 65.8 KB
cpu_pm.c -rw-r--r-- 6.1 KB
crash_core.c -rw-r--r-- 12.6 KB
crash_dump.c -rw-r--r-- 1.1 KB
cred.c -rw-r--r-- 24.2 KB
delayacct.c -rw-r--r-- 6.8 KB
dma.c -rw-r--r-- 3.3 KB
exec_domain.c -rw-r--r-- 1.1 KB
exit.c -rw-r--r-- 44.9 KB
extable.c -rw-r--r-- 4.2 KB
fail_function.c -rw-r--r-- 7.0 KB
fork.c -rw-r--r-- 79.8 KB
freezer.c -rw-r--r-- 4.4 KB
gen_kheaders.sh -rwxr-xr-x 3.1 KB
groups.c -rw-r--r-- 5.0 KB
hung_task.c -rw-r--r-- 9.4 KB
iomem.c -rw-r--r-- 4.7 KB
irq_work.c -rw-r--r-- 7.5 KB
jump_label.c -rw-r--r-- 20.4 KB
kallsyms.c -rw-r--r-- 23.7 KB
kallsyms_internal.h -rw-r--r-- 858 bytes
kcmp.c -rw-r--r-- 5.4 KB
kcov.c -rw-r--r-- 28.9 KB
kexec.c -rw-r--r-- 7.4 KB
kexec_core.c -rw-r--r-- 31.1 KB
kexec_elf.c -rw-r--r-- 11.4 KB
kexec_file.c -rw-r--r-- 32.4 KB
kexec_internal.h -rw-r--r-- 924 bytes
kheaders.c -rw-r--r-- 1.6 KB
kmod.c -rw-r--r-- 5.0 KB
kprobes.c -rw-r--r-- 73.6 KB
ksysfs.c -rw-r--r-- 6.3 KB
kthread.c -rw-r--r-- 41.5 KB
latencytop.c -rw-r--r-- 7.6 KB
module_signature.c -rw-r--r-- 1.1 KB
notifier.c -rw-r--r-- 17.9 KB
nsproxy.c -rw-r--r-- 12.8 KB
padata.c -rw-r--r-- 27.4 KB
panic.c -rw-r--r-- 18.9 KB
params.c -rw-r--r-- 23.1 KB
pid.c -rw-r--r-- 18.2 KB
pid_namespace.c -rw-r--r-- 11.3 KB
profile.c -rw-r--r-- 13.5 KB
ptrace.c -rw-r--r-- 36.9 KB
range.c -rw-r--r-- 3.0 KB
reboot.c -rw-r--r-- 31.7 KB
regset.c -rw-r--r-- 1.9 KB
relay.c -rw-r--r-- 30.0 KB
resource.c -rw-r--r-- 51.7 KB
resource_kunit.c -rw-r--r-- 4.3 KB
rseq.c -rw-r--r-- 10.0 KB
scftorture.c -rw-r--r-- 20.0 KB
scs.c -rw-r--r-- 2.9 KB
seccomp.c -rw-r--r-- 63.4 KB
signal.c -rw-r--r-- 123.3 KB
smp.c -rw-r--r-- 34.4 KB
smpboot.c -rw-r--r-- 11.9 KB
smpboot.h -rw-r--r-- 640 bytes
softirq.c -rw-r--r-- 24.1 KB
stackleak.c -rw-r--r-- 4.5 KB
stacktrace.c -rw-r--r-- 10.4 KB
static_call.c -rw-r--r-- 158 bytes
static_call_inline.c -rw-r--r-- 12.5 KB
stop_machine.c -rw-r--r-- 18.3 KB
sys.c -rw-r--r-- 65.2 KB
sys_ni.c -rw-r--r-- 10.2 KB
sysctl-test.c -rw-r--r-- 10.7 KB
sysctl.c -rw-r--r-- 59.5 KB
task_work.c -rw-r--r-- 5.0 KB
taskstats.c -rw-r--r-- 15.8 KB
torture.c -rw-r--r-- 25.3 KB
tracepoint.c -rw-r--r-- 20.3 KB
tsacct.c -rw-r--r-- 5.0 KB
ucount.c -rw-r--r-- 9.1 KB
uid16.c -rw-r--r-- 5.1 KB
uid16.h -rw-r--r-- 442 bytes
umh.c -rw-r--r-- 15.1 KB
up.c -rw-r--r-- 1.5 KB
user-return-notifier.c -rw-r--r-- 1.3 KB
user.c -rw-r--r-- 5.9 KB
user_namespace.c -rw-r--r-- 35.6 KB
usermode_driver.c -rw-r--r-- 4.3 KB
utsname.c -rw-r--r-- 3.8 KB
utsname_sysctl.c -rw-r--r-- 3.2 KB
watch_queue.c -rw-r--r-- 17.2 KB
watchdog.c -rw-r--r-- 22.6 KB
watchdog_hld.c -rw-r--r-- 7.7 KB
workqueue.c -rw-r--r-- 168.4 KB
workqueue_internal.h -rw-r--r-- 2.4 KB

back to top