https://github.com/torvalds/linux
Revision 89da619bc18d79bca5304724c11d4ba3b67ce2c6 authored by Jiang Biao on 18 July 2018, 02:29:28 UTC, committed by Michael S. Tsirkin on 30 July 2018, 13:45:33 UTC
Kernel panic when with high memory pressure, calltrace looks like,

PID: 21439 TASK: ffff881be3afedd0 CPU: 16 COMMAND: "java"
 #0 [ffff881ec7ed7630] machine_kexec at ffffffff81059beb
 #1 [ffff881ec7ed7690] __crash_kexec at ffffffff81105942
 #2 [ffff881ec7ed7760] crash_kexec at ffffffff81105a30
 #3 [ffff881ec7ed7778] oops_end at ffffffff816902c8
 #4 [ffff881ec7ed77a0] no_context at ffffffff8167ff46
 #5 [ffff881ec7ed77f0] __bad_area_nosemaphore at ffffffff8167ffdc
 #6 [ffff881ec7ed7838] __node_set at ffffffff81680300
 #7 [ffff881ec7ed7860] __do_page_fault at ffffffff8169320f
 #8 [ffff881ec7ed78c0] do_page_fault at ffffffff816932b5
 #9 [ffff881ec7ed78f0] page_fault at ffffffff8168f4c8
    [exception RIP: _raw_spin_lock_irqsave+47]
    RIP: ffffffff8168edef RSP: ffff881ec7ed79a8 RFLAGS: 00010046
    RAX: 0000000000000246 RBX: ffffea0019740d00 RCX: ffff881ec7ed7fd8
    RDX: 0000000000020000 RSI: 0000000000000016 RDI: 0000000000000008
    RBP: ffff881ec7ed79a8 R8: 0000000000000246 R9: 000000000001a098
    R10: ffff88107ffda000 R11: 0000000000000000 R12: 0000000000000000
    R13: 0000000000000008 R14: ffff881ec7ed7a80 R15: ffff881be3afedd0
    ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018

It happens in the pagefault and results in double pagefault
during compacting pages when memory allocation fails.

Analysed the vmcore, the page leads to second pagefault is corrupted
with _mapcount=-256, but private=0.

It's caused by the race between migration and ballooning, and lock
missing in virtballoon_migratepage() of virtio_balloon driver.
This patch fix the bug.

Fixes: e22504296d4f64f ("virtio_balloon: introduce migration primitives to balloon pages")
Cc: stable@vger.kernel.org
Signed-off-by: Jiang Biao <jiang.biao2@zte.com.cn>
Signed-off-by: Huang Chong <huang.chong@zte.com.cn>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
1 parent f2467ee
History
Tip revision: 89da619bc18d79bca5304724c11d4ba3b67ce2c6 authored by Jiang Biao on 18 July 2018, 02:29:28 UTC
virtio_balloon: fix another race between migration and ballooning
Tip revision: 89da619
File Mode Size
basic
coccinelle
dtc
gcc-plugins
gdb
genksyms
kconfig
ksymoops
mod
package
selinux
tracing
.gitignore -rw-r--r-- 162 bytes
Kbuild.include -rw-r--r-- 15.2 KB
Kconfig.include -rw-r--r-- 871 bytes
Lindent -rwxr-xr-x 502 bytes
Makefile -rw-r--r-- 1.6 KB
Makefile.asm-generic -rw-r--r-- 1.2 KB
Makefile.build -rw-r--r-- 19.2 KB
Makefile.clean -rw-r--r-- 2.8 KB
Makefile.dtbinst -rw-r--r-- 1.1 KB
Makefile.extrawarn -rw-r--r-- 2.7 KB
Makefile.gcc-plugins -rw-r--r-- 1.7 KB
Makefile.headersinst -rw-r--r-- 4.0 KB
Makefile.host -rw-r--r-- 6.2 KB
Makefile.kasan -rw-r--r-- 1.4 KB
Makefile.kcov -rw-r--r-- 319 bytes
Makefile.lib -rw-r--r-- 14.6 KB
Makefile.modbuiltin -rw-r--r-- 1.7 KB
Makefile.modinst -rw-r--r-- 1.1 KB
Makefile.modpost -rw-r--r-- 5.3 KB
Makefile.modsign -rw-r--r-- 897 bytes
Makefile.ubsan -rw-r--r-- 1014 bytes
adjust_autoksyms.sh -rwxr-xr-x 2.9 KB
asn1_compiler.c -rw-r--r-- 35.5 KB
bloat-o-meter -rwxr-xr-x 3.2 KB
bootgraph.pl -rwxr-xr-x 6.3 KB
bpf_helpers_doc.py -rwxr-xr-x 15.5 KB
cc-can-link.sh -rwxr-xr-x 166 bytes
check_00index.sh -rwxr-xr-x 1.3 KB
check_extable.sh -rwxr-xr-x 4.9 KB
checkincludes.pl -rwxr-xr-x 1.9 KB
checkkconfigsymbols.py -rwxr-xr-x 15.5 KB
checkpatch.pl -rwxr-xr-x 191.1 KB
checkstack.pl -rwxr-xr-x 5.2 KB
checksyscalls.sh -rwxr-xr-x 5.7 KB
checkversion.pl -rwxr-xr-x 1.9 KB
clang-version.sh -rwxr-xr-x 635 bytes
cleanfile -rwxr-xr-x 3.5 KB
cleanpatch -rwxr-xr-x 5.1 KB
coccicheck -rwxr-xr-x 7.2 KB
config -rwxr-xr-x 4.5 KB
conmakehash.c -rw-r--r-- 6.0 KB
const_structs.checkpatch -rw-r--r-- 964 bytes
decode_stacktrace.sh -rwxr-xr-x 3.7 KB
decodecode -rwxr-xr-x 2.5 KB
depmod.sh -rwxr-xr-x 1.1 KB
diffconfig -rwxr-xr-x 3.7 KB
documentation-file-ref-check -rwxr-xr-x 3.5 KB
export_report.pl -rwxr-xr-x 4.5 KB
extract-cert.c -rw-r--r-- 3.5 KB
extract-ikconfig -rwxr-xr-x 1.7 KB
extract-module-sig.pl -rwxr-xr-x 3.7 KB
extract-sys-certs.pl -rwxr-xr-x 3.7 KB
extract-vmlinux -rwxr-xr-x 1.7 KB
extract_xc3028.pl -rwxr-xr-x 44.6 KB
faddr2line -rwxr-xr-x 6.2 KB
file-size.sh -rwxr-xr-x 86 bytes
find-unused-docs.sh -rwxr-xr-x 1.3 KB
gcc-goto.sh -rwxr-xr-x 530 bytes
gcc-ld -rwxr-xr-x 711 bytes
gcc-plugin.sh -rwxr-xr-x 1.1 KB
gcc-version.sh -rwxr-xr-x 857 bytes
gcc-x86_32-has-stack-protector.sh -rwxr-xr-x 173 bytes
gcc-x86_64-has-stack-protector.sh -rwxr-xr-x 198 bytes
gen_initramfs_list.sh -rwxr-xr-x 8.0 KB
get_dvb_firmware -rwxr-xr-x 25.2 KB
get_maintainer.pl -rwxr-xr-x 65.4 KB
gfp-translate -rwxr-xr-x 1.7 KB
headerdep.pl -rwxr-xr-x 3.5 KB
headers.sh -rwxr-xr-x 512 bytes
headers_check.pl -rwxr-xr-x 3.7 KB
headers_install.sh -rwxr-xr-x 1.4 KB
insert-sys-cert.c -rw-r--r-- 8.9 KB
kallsyms.c -rw-r--r-- 18.1 KB
kernel-doc -rwxr-xr-x 60.5 KB
ld-version.sh -rwxr-xr-x 269 bytes
leaking_addresses.pl -rwxr-xr-x 12.9 KB
link-vmlinux.sh -rwxr-xr-x 6.9 KB
makelst -rwxr-xr-x 808 bytes
markup_oops.pl -rwxr-xr-x 8.1 KB
mkcompile_h -rwxr-xr-x 2.5 KB
mkmakefile -rwxr-xr-x 1.2 KB
mksysmap -rwxr-xr-x 1.3 KB
mkuboot.sh -rwxr-xr-x 414 bytes
module-common.lds -rw-r--r-- 901 bytes
namespace.pl -rwxr-xr-x 13.0 KB
objdiff -rwxr-xr-x 2.8 KB
parse-maintainers.pl -rw-r--r-- 3.7 KB
patch-kernel -rwxr-xr-x 9.9 KB
pnmtologo.c -rw-r--r-- 11.9 KB
profile2linkerlist.pl -rwxr-xr-x 414 bytes
prune-kernel -rwxr-xr-x 708 bytes
recordmcount.c -rw-r--r-- 16.7 KB
recordmcount.h -rw-r--r-- 16.4 KB
recordmcount.pl -rwxr-xr-x 18.3 KB
setlocalversion -rwxr-xr-x 3.9 KB
show_delta -rwxr-xr-x 3.0 KB
sign-file.c -rw-r--r-- 9.8 KB
sortextable.c -rw-r--r-- 8.4 KB
sortextable.h -rw-r--r-- 5.5 KB
spdxcheck.py -rwxr-xr-x 9.4 KB
spelling.txt -rw-r--r-- 25.0 KB
sphinx-pre-install -rwxr-xr-x 14.0 KB
split-man.pl -rwxr-xr-x 600 bytes
stackdelta -rwxr-xr-x 1.8 KB
stackusage -rwxr-xr-x 794 bytes
tags.sh -rwxr-xr-x 9.5 KB
unifdef.c -rw-r--r-- 34.8 KB
ver_linux -rwxr-xr-x 2.7 KB
xen-hypercalls.sh -rw-r--r-- 386 bytes
xz_wrap.sh -rwxr-xr-x 562 bytes

back to top