Go to file
Enlin Mu f779903586 pstore/ram: Check start of empty przs during init
commit fe8c3623ab upstream.

After commit 30696378f6 ("pstore/ram: Do not treat empty buffers as
valid"), initialization would assume a prz was valid after seeing that
the buffer_size is zero (regardless of the buffer start position). This
unchecked start value means it could be outside the bounds of the buffer,
leading to future access panics when written to:

 sysdump_panic_event+0x3b4/0x5b8
 atomic_notifier_call_chain+0x54/0x90
 panic+0x1c8/0x42c
 die+0x29c/0x2a8
 die_kernel_fault+0x68/0x78
 __do_kernel_fault+0x1c4/0x1e0
 do_bad_area+0x40/0x100
 do_translation_fault+0x68/0x80
 do_mem_abort+0x68/0xf8
 el1_da+0x1c/0xc0
 __raw_writeb+0x38/0x174
 __memcpy_toio+0x40/0xac
 persistent_ram_update+0x44/0x12c
 persistent_ram_write+0x1a8/0x1b8
 ramoops_pstore_write+0x198/0x1e8
 pstore_console_write+0x94/0xe0
 ...

To avoid this, also check if the prz start is 0 during the initialization
phase. If not, the next prz sanity check case will discover it (start >
size) and zap the buffer back to a sane state.

Fixes: 30696378f6 ("pstore/ram: Do not treat empty buffers as valid")
Cc: Yunlong Xing <yunlong.xing@unisoc.com>
Cc: stable@vger.kernel.org
Signed-off-by: Enlin Mu <enlin.mu@unisoc.com>
Link: https://lore.kernel.org/r/20230801060432.1307717-1-yunlong.xing@unisoc.com
[kees: update commit log with backtrace and clarifications]
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-09-13 09:48:42 +02:00
Documentation platform/chrome: chromeos_acpi: print hex string for ACPI_TYPE_BUFFER 2023-09-13 09:48:42 +02:00
LICENSES LICENSES: Add the copyleft-next-0.3.1 license 2022-11-08 15:44:01 +01:00
arch x86/MCE: Always save CS register on AMD Zen IF Poison errors 2023-09-13 09:48:42 +02:00
block block: don't add or resize partition on the disk with GENHD_FL_NO_PART 2023-09-13 09:48:41 +02:00
certs KEYS: Add missing function documentation 2023-04-24 16:15:52 +03:00
crypto crypto: af_alg - Decrement struct key.usage in alg_set_by_key_serial() 2023-09-13 09:48:42 +02:00
drivers mmc: renesas_sdhi: register irqs before registering controller 2023-09-13 09:48:42 +02:00
fs pstore/ram: Check start of empty przs during init 2023-09-13 09:48:42 +02:00
include net: handle ARPHRD_PPP in dev_is_mac_header_xmit() 2023-09-13 09:48:42 +02:00
init sched/psi: Select KERNFS as needed 2023-09-13 09:47:58 +02:00
io_uring io_uring: Don't set affinity on a dying sqpoll thread 2023-09-13 09:48:40 +02:00
ipc Merge branch 'work.namespace' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2023-02-24 19:20:07 -08:00
kernel bpf: Fix issue in verifying allow_ptr_leaks 2023-09-13 09:48:41 +02:00
lib XArray: Do not return sibling entries from xa_load() 2023-09-13 09:48:39 +02:00
mm mm/vmalloc: add a safer version of find_vm_area() for debug 2023-09-13 09:48:38 +02:00
net dccp: Fix out of bounds access in DCCP error handler 2023-09-13 09:48:41 +02:00
rust rust: macros: vtable: fix `HAS_*` redefinition (`gen_const_name`) 2023-08-23 17:32:36 +02:00
samples samples/bpf: fix broken map lookup probe 2023-09-13 09:48:06 +02:00
scripts scripts/gdb: fix 'lx-lsmod' show the wrong size 2023-09-13 09:48:05 +02:00
security smackfs: Prevent underflow in smk_set_cipso() 2023-09-13 09:48:16 +02:00
sound ALSA: hda/cirrus: Fix broken audio on hardware with two CS42L42 codecs. 2023-09-13 09:48:40 +02:00
tools XArray: Do not return sibling entries from xa_load() 2023-09-13 09:48:39 +02:00
usr initramfs: Check negative timestamp to prevent broken cpio archive 2023-04-16 17:37:01 +09:00
virt kvm/vfio: ensure kvg instance stays around in kvm_vfio_group_add() 2023-09-13 09:48:21 +02:00
.clang-format cxl for v6.4 2023-04-30 11:51:51 -07:00
.cocciconfig
.get_maintainer.ignore get_maintainer: add Alan to .get_maintainer.ignore 2022-08-20 15:17:44 -07:00
.gitattributes .gitattributes: use 'dts' diff driver for *.dtso files 2023-02-26 15:28:23 +09:00
.gitignore linux-kselftest-kunit-6.4-rc1 2023-04-24 12:31:32 -07:00
.mailmap mailmap: add entries for Ben Dooks 2023-06-19 13:19:35 -07:00
.rustfmt.toml rust: add `.rustfmt.toml` 2022-09-28 09:02:20 +02:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: sctp: move Neil to CREDITS 2023-05-12 08:51:32 +01:00
Kbuild Kbuild updates for v6.1 2022-10-10 12:00:45 -07:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS Networking fixes for 6.4-rc8, including fixes from ipsec, bpf, 2023-06-22 17:59:51 -07:00
Makefile kbuild: rust_is_available: remove -v option 2023-09-13 09:48:03 +02:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00

README

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.