Go to file
Nicholas Piggin 84f2f8e7a6 powerpc: Fix reschedule bug in KUAP-unlocked user copy
schedule must not be explicitly called while KUAP is unlocked, because
the AMR register will not be saved across the context switch on
64s (preemption is allowed because that is driven by interrupts which do
save the AMR).

exit_vmx_usercopy() runs inside an unlocked user access region, and it
calls preempt_enable() which will call schedule() if need_resched() was
set while non-preemptible. This can cause tasks to run unprotected when
the should not, and can cause the user copy to be improperly blocked
when scheduling back to it.

Fix this by avoiding the explicit resched for preempt kernels by
generating an interrupt to reschedule the context if need_resched() got
set.

Reported-by: Samuel Holland <samuel@sholland.org>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20221013151647.1857994-3-npiggin@gmail.com
Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
2023-01-01 21:57:45 -05:00
arch powerpc: Fix reschedule bug in KUAP-unlocked user copy 2023-01-01 21:57:45 -05:00
block blk-wbt: fix that 'rwb->wc' is always set to 1 in wbt_init() 2022-10-24 09:58:30 +02:00
certs certs: make system keyring depend on built-in x509 parser 2022-09-28 11:32:27 +02:00
crypto crypto: akcipher - default implementation for setting a private key 2022-10-24 09:58:05 +02:00
Documentation This is the 5.19.17 stable release 2022-10-31 14:51:32 -04:00
drivers This is the 5.19.17 stable release 2022-10-31 14:51:32 -04:00
fs Revert "don't use __kernel_write() on kmap_local_page()" 2022-11-18 16:13:18 -05:00
include This is the 5.19.17 stable release 2022-10-31 14:51:32 -04:00
init Check /dev/console using init_stat() 2022-11-10 14:03:54 -05:00
io_uring io_uring: correct pinned_vm accounting 2022-10-24 09:56:40 +02:00
ipc ipc: mqueue: fix possible memory leak in init_mqueue_fs() 2022-10-24 09:58:02 +02:00
kernel This is the 5.19.17 stable release 2022-10-31 14:51:32 -04:00
lib This is the 5.19.17 stable release 2022-10-31 14:51:32 -04:00
LICENSES LICENSES/LGPL-2.1: Add LGPL-2.1-or-later as valid identifiers 2021-12-16 14:33:10 +01:00
mm This is the 5.19.17 stable release 2022-10-31 14:51:32 -04:00
net This is the 5.19.17 stable release 2022-10-31 14:51:32 -04:00
samples sample: bpf: xdp_router_ipv4: Allow the kernel to send arp requests 2022-08-17 15:14:25 +02:00
scripts This is the 5.19.17 stable release 2022-10-31 14:51:32 -04:00
security This is the 5.19.17 stable release 2022-10-31 14:51:32 -04:00
sound ALSA: usb-audio: Fix last interface check for registration 2022-10-24 09:58:30 +02:00
tools tools: Remove some options from CLANG_CROSS_FLAGS 2022-12-05 17:02:13 -05:00
usr initramfs: allow an optional wrapper script around initramfs generation 2022-08-01 23:12:01 -04:00
virt KVM: Unconditionally get a ref to /dev/kvm module when creating a VM 2022-08-25 11:45:05 +02:00
.clang-format clang-format: Fix space after for_each macros 2022-05-20 19:27:16 +02:00
.cocciconfig
.get_maintainer.ignore Opt out of scripts/get_maintainer.pl 2019-05-16 10:53:40 -07:00
.gitattributes .gitattributes: use 'dts' diff driver for dts files 2019-12-04 19:44:11 -08:00
.gitignore kbuild: split the second line of *.mod into *.usyms 2022-05-08 03:16:59 +09:00
.mailmap ARM: SoC fixes for 5.19, part 4 2022-07-27 09:43:07 -07:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: mark ARM/PALM TREO SUPPORT orphan 2022-07-07 15:17:00 +02:00
Kbuild kbuild: rename hostprogs-y/always to hostprogs/always-y 2020-02-04 01:53:07 +09:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS This is the 5.19.2 stable release 2022-08-22 11:08:11 -04:00
Makefile This is the 5.19.17 stable release 2022-10-31 14:51:32 -04:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00

Linux kernel

There are several guides for kernel developers and users. These guides can be rendered in a number of formats, like HTML and PDF. Please read Documentation/admin-guide/README.rst first.

In order to build the documentation, use make htmldocs or make pdfdocs. The formatted documentation can also be read online at:

https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory, several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the requirements for building and running the kernel, and information about the problems which may result by upgrading your kernel.