https://github.com/torvalds/linux
Revision 800e26b81311dcc0080b8784f80620bb8f2baaa5 authored by Christoph Hellwig on 26 June 2020, 03:30:40 UTC, committed by Linus Torvalds on 26 June 2020, 07:27:38 UTC
Patch series "fix a hyperv W^X violation and remove vmalloc_exec" Dexuan reported a W^X violation due to the fact that the hyper hypercall page due switching it to be allocated using vmalloc_exec. The problem is that PAGE_KERNEL_EXEC as used by vmalloc_exec actually sets writable permissions in the pte. This series fixes the issue by switching to the low-level __vmalloc_node_range interface that allows specifing more detailed permissions instead. It then also open codes the other two callers and removes the somewhat confusing vmalloc_exec interface. Peter noted that the hyper hypercall page allocation also has another long standing issue in that it shouldn't use the full vmalloc but just the module space. This issue is so far theoretical as the allocation is done early in the boot process. I plan to fix it with another bigger series for 5.9. This patch (of 3): Avoid a W^X violation cause by the fact that PAGE_KERNEL_EXEC includes the writable bit. For this resurrect the removed PAGE_KERNEL_RX definition, but as PAGE_KERNEL_ROX to match arm64 and powerpc. Link: http://lkml.kernel.org/r/20200618064307.32739-2-hch@lst.de Fixes: 78bb17f76edc ("x86/hyperv: use vmalloc_exec for the hypercall page") Signed-off-by: Christoph Hellwig <hch@lst.de> Reported-by: Dexuan Cui <decui@microsoft.com> Tested-by: Vitaly Kuznetsov <vkuznets@redhat.com> Acked-by: Wei Liu <wei.liu@kernel.org> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Cc: Jessica Yu <jeyu@kernel.org> Cc: David Hildenbrand <david@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 0076f02
Tip revision: 800e26b81311dcc0080b8784f80620bb8f2baaa5 authored by Christoph Hellwig on 26 June 2020, 03:30:40 UTC
x86/hyperv: allocate the hypercall page with only read and execute bits
x86/hyperv: allocate the hypercall page with only read and execute bits
Tip revision: 800e26b
File | Mode | Size |
---|---|---|
atomic | ||
basic | ||
coccinelle | ||
dtc | ||
dummy-tools | ||
gcc-plugins | ||
gdb | ||
genksyms | ||
kconfig | ||
ksymoops | ||
mod | ||
package | ||
selinux | ||
tracing | ||
.gitignore | -rw-r--r-- | 139 bytes |
Kbuild.include | -rw-r--r-- | 12.2 KB |
Kconfig.include | -rw-r--r-- | 1.8 KB |
Lindent | -rwxr-xr-x | 502 bytes |
Makefile | -rw-r--r-- | 1.2 KB |
Makefile.asm-generic | -rw-r--r-- | 1.8 KB |
Makefile.build | -rw-r--r-- | 17.3 KB |
Makefile.clean | -rw-r--r-- | 2.2 KB |
Makefile.dtbinst | -rw-r--r-- | 933 bytes |
Makefile.extrawarn | -rw-r--r-- | 2.7 KB |
Makefile.gcc-plugins | -rw-r--r-- | 2.4 KB |
Makefile.headersinst | -rw-r--r-- | 2.9 KB |
Makefile.host | -rw-r--r-- | 5.9 KB |
Makefile.kasan | -rw-r--r-- | 1.4 KB |
Makefile.kcov | -rw-r--r-- | 359 bytes |
Makefile.kcsan | -rw-r--r-- | 706 bytes |
Makefile.lib | -rw-r--r-- | 15.1 KB |
Makefile.modfinal | -rw-r--r-- | 1.8 KB |
Makefile.modinst | -rw-r--r-- | 1.1 KB |
Makefile.modpost | -rw-r--r-- | 3.9 KB |
Makefile.modsign | -rw-r--r-- | 791 bytes |
Makefile.package | -rw-r--r-- | 6.6 KB |
Makefile.ubsan | -rw-r--r-- | 1.0 KB |
Makefile.userprogs | -rw-r--r-- | 1.6 KB |
adjust_autoksyms.sh | -rwxr-xr-x | 2.2 KB |
asn1_compiler.c | -rw-r--r-- | 35.3 KB |
bin2c.c | -rw-r--r-- | 743 bytes |
bloat-o-meter | -rwxr-xr-x | 3.3 KB |
bootgraph.pl | -rwxr-xr-x | 5.6 KB |
bpf_helpers_doc.py | -rwxr-xr-x | 20.5 KB |
cc-can-link.sh | -rwxr-xr-x | 166 bytes |
check-sysctl-docs | -rwxr-xr-x | 4.4 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 | 205.0 KB |
checkstack.pl | -rwxr-xr-x | 5.9 KB |
checksyscalls.sh | -rwxr-xr-x | 7.3 KB |
checkversion.pl | -rwxr-xr-x | 1.9 KB |
clang-version.sh | -rwxr-xr-x | 527 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.6 KB |
const_structs.checkpatch | -rw-r--r-- | 964 bytes |
decode_stacktrace.sh | -rwxr-xr-x | 4.0 KB |
decodecode | -rwxr-xr-x | 2.6 KB |
depmod.sh | -rwxr-xr-x | 1.3 KB |
diffconfig | -rwxr-xr-x | 3.7 KB |
documentation-file-ref-check | -rwxr-xr-x | 5.6 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 | 511 bytes |
gcc-ld | -rwxr-xr-x | 711 bytes |
gcc-plugin.sh | -rwxr-xr-x | 406 bytes |
gcc-version.sh | -rwxr-xr-x | 588 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_autoksyms.sh | -rwxr-xr-x | 1.3 KB |
gen_compile_commands.py | -rwxr-xr-x | 5.6 KB |
gen_ksymdeps.sh | -rwxr-xr-x | 399 bytes |
get_abi.pl | -rwxr-xr-x | 10.1 KB |
get_dvb_firmware | -rwxr-xr-x | 24.5 KB |
get_maintainer.pl | -rwxr-xr-x | 67.0 KB |
gfp-translate | -rwxr-xr-x | 1.7 KB |
headerdep.pl | -rwxr-xr-x | 3.5 KB |
headers_check.pl | -rwxr-xr-x | 3.7 KB |
headers_install.sh | -rwxr-xr-x | 3.4 KB |
insert-sys-cert.c | -rw-r--r-- | 8.9 KB |
jobserver-exec | -rwxr-xr-x | 2.2 KB |
kallsyms.c | -rw-r--r-- | 17.4 KB |
kernel-doc | -rwxr-xr-x | 61.9 KB |
ld-version.sh | -rwxr-xr-x | 269 bytes |
leaking_addresses.pl | -rwxr-xr-x | 12.8 KB |
link-vmlinux.sh | -rwxr-xr-x | 8.9 KB |
makelst | -rwxr-xr-x | 808 bytes |
markup_oops.pl | -rwxr-xr-x | 7.9 KB |
mkcompile_h | -rwxr-xr-x | 2.3 KB |
mkmakefile | -rwxr-xr-x | 426 bytes |
mksysmap | -rwxr-xr-x | 1.3 KB |
mkuboot.sh | -rwxr-xr-x | 414 bytes |
module-common.lds | -rw-r--r-- | 901 bytes |
modules-check.sh | -rwxr-xr-x | 434 bytes |
namespace.pl | -rwxr-xr-x | 13.2 KB |
nsdeps | -rw-r--r-- | 1.9 KB |
objdiff | -rwxr-xr-x | 2.8 KB |
parse-maintainers.pl | -rwxr-xr-x | 4.5 KB |
patch-kernel | -rwxr-xr-x | 9.9 KB |
profile2linkerlist.pl | -rwxr-xr-x | 414 bytes |
prune-kernel | -rwxr-xr-x | 708 bytes |
recordmcount.c | -rw-r--r-- | 16.5 KB |
recordmcount.h | -rw-r--r-- | 19.3 KB |
recordmcount.pl | -rwxr-xr-x | 18.8 KB |
setlocalversion | -rwxr-xr-x | 4.3 KB |
show_delta | -rwxr-xr-x | 3.0 KB |
sign-file.c | -rw-r--r-- | 9.8 KB |
sorttable.c | -rw-r--r-- | 7.5 KB |
sorttable.h | -rw-r--r-- | 9.7 KB |
spdxcheck-test.sh | -rw-r--r-- | 323 bytes |
spdxcheck.py | -rwxr-xr-x | 9.9 KB |
spelling.txt | -rw-r--r-- | 30.1 KB |
sphinx-pre-install | -rwxr-xr-x | 21.8 KB |
split-man.pl | -rwxr-xr-x | 600 bytes |
stackdelta | -rwxr-xr-x | 1.8 KB |
stackusage | -rwxr-xr-x | 794 bytes |
subarch.include | -rw-r--r-- | 641 bytes |
tags.sh | -rwxr-xr-x | 9.3 KB |
tools-support-relr.sh | -rwxr-xr-x | 518 bytes |
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 | 563 bytes |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...