linux/arch/powerpc/kernel
Nathan Lynch e7582edb78 powerpc/rtas: Move token validation from block_rtas_call() to sys_rtas()
The rtas system call handler sys_rtas() delegates certain input
validation steps to a helper function: block_rtas_call(). One of these
steps ensures that the user-supplied token value maps to a known RTAS
function. This is done by performing a "reverse" token-to-function
lookup via rtas_token_to_function_untrusted() to obtain an
rtas_function object.

In changes to come, sys_rtas() itself will need the function
descriptor for the token. To prepare:

* Move the lookup and validation up into sys_rtas() and pass the
  resulting rtas_function pointer to block_rtas_call(), which is
  otherwise unconcerned with the token value.

* Change block_rtas_call() to report the RTAS function name instead of
  the token value on validation failures, since it can now rely on
  having a valid function descriptor.

One behavior change is that sys_rtas() now silently errors out when
passed a bad token, before calling block_rtas_call(). So we will no
longer log "RTAS call blocked - exploit attempt?" on invalid
tokens. This is consistent with how sys_rtas() currently handles other
"metadata" (nargs and nret), while block_rtas_call() is primarily
concerned with validating the arguments to be passed to specific RTAS
functions.

Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20231212-papr-sys_rtas-vs-lockdown-v6-5-e9eafd0c8c6c@linux.ibm.com
2023-12-13 21:38:20 +11:00
..
ptrace powerpc: Replace GPL 2.0+ README.legal boilerplate with SPDX 2023-09-19 20:05:58 +10:00
syscalls asm-generic updates for v6.7 2023-11-01 15:28:33 -10:00
trace powerpc updates for 6.6 2023-08-31 12:43:10 -07:00
vdso powerpc/vdso: No need to undef powerpc for 64-bit build 2023-12-07 23:34:38 +11:00
.gitignore
85xx_entry_mapping.S powerpc: Remove CONFIG_FSL_BOOKE 2022-09-26 22:47:37 +10:00
align.c powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
asm-offsets.c powerpc/64: vmlinux support building with PCREL addresing 2023-04-20 12:59:21 +10:00
audit_32.h powerpc: address missing-prototypes warnings 2023-08-02 22:22:19 +10:00
audit.c powerpc: address missing-prototypes warnings 2023-08-02 22:22:19 +10:00
btext.c powerpc: Use shared font data 2023-10-01 23:09:02 +11:00
cacheinfo.c powerpc: Remove asm/prom.h from all files that don't need it 2022-05-08 22:15:04 +10:00
cacheinfo.h
compat_audit.c powerpc: address missing-prototypes warnings 2023-08-02 22:22:19 +10:00
cpu_setup_6xx.S powerpc/32: Fix objtool unannotated intra-function call warnings 2022-11-18 19:00:06 +11:00
cpu_setup_44x.S
cpu_setup_e500.S powerpc/32: Fix objtool unannotated intra-function call warnings 2022-11-18 19:00:06 +11:00
cpu_setup_pa6t.S
cpu_setup_power.c powerpc/dexcr: Add initial Dynamic Execution Control Register (DEXCR) support 2023-06-19 17:36:25 +10:00
cpu_setup_ppc970.S
cpu_specs_8xx.h powerpc/cputable: Split cpu_specs[] out of cputable.h 2022-09-26 22:47:13 +10:00
cpu_specs_40x.h powerpc/cputable: Split cpu_specs[] out of cputable.h 2022-09-26 22:47:13 +10:00
cpu_specs_44x.h powerpc/cputable: Split cpu_specs[] out of cputable.h 2022-09-26 22:47:13 +10:00
cpu_specs_47x.h powerpc/cputable: Split cpu_specs[] out of cputable.h 2022-09-26 22:47:13 +10:00
cpu_specs_85xx.h powerpc/cputable: Split cpu_specs[] for mpc85xx and e500mc 2022-09-26 23:00:05 +10:00
cpu_specs_book3s_32.h powerpc/cputable: Split cpu_specs[] out of cputable.h 2022-09-26 22:47:13 +10:00
cpu_specs_book3s_64.h powerpc: Add PVN support for HeXin C2000 processor 2023-12-01 21:15:33 +11:00
cpu_specs_e500mc.h powerpc/cputable: Split cpu_specs[] for mpc85xx and e500mc 2022-09-26 23:00:05 +10:00
cpu_specs.h powerpc/cputable: Split cpu_specs[] for mpc85xx and e500mc 2022-09-26 23:00:05 +10:00
cputable.c powerpc: Make cpu_spec __ro_after_init 2023-11-27 22:01:14 +11:00
crash_dump.c powerpc/fadump: make is_kdump_kernel() return false when fadump is active 2023-09-18 12:23:27 +10:00
dawr.c powerpc: Include asm/firmware.h in all users of firmware_has_feature() 2022-06-29 16:45:05 +10:00
dbell.c powerpc/64: Fix perf profiling asynchronous interrupt handlers 2023-01-30 20:07:42 +11:00
dma-iommu.c powerpc/iommu: Incorrect DDW Table is referenced for SR-IOV device 2023-05-17 00:54:55 +10:00
dma-mask.c dma-mapping: move arch_dma_set_mask() declaration to header 2023-07-31 17:54:28 +02:00
dma-swiotlb.c swiotlb: add a SWIOTLB_ANY flag to lift the low memory restriction 2022-04-18 07:21:12 +02:00
dt_cpu_ftrs.c powerpc: move from strlcpy with unused retval to strscpy 2022-08-26 11:02:20 +10:00
early_32.c powerpc: Move C prototypes out of asm-prototypes.h 2022-03-08 22:06:25 +11:00
eeh_cache.c powerpc/kernel: Add __init attribute to eligible functions 2021-12-23 22:33:10 +11:00
eeh_driver.c powerpc/eeh: Remove unnecessary cast 2023-10-19 17:16:20 +11:00
eeh_event.c powerpc: fix typos in comments 2022-05-05 22:12:44 +10:00
eeh_pe.c powerpc/eeh: Rely on dev->link_active_reporting 2023-06-14 17:58:12 -05:00
eeh_sysfs.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
eeh.c powerpc: fix typos in comments 2022-05-05 22:12:44 +10:00
entry_32.S powerpc/47x: Fix 47x syscall return crash 2023-10-11 09:31:26 +11:00
epapr_hcalls.S powerpc: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-16 23:54:48 +10:00
epapr_paravirt.c powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
exceptions-64e.S powerpc: Remove orphaned reg_a2.h 2023-11-27 22:01:14 +11:00
exceptions-64s.S docs: move powerpc under arch 2023-10-10 13:35:55 -06:00
fadump.c crash_core: change the prototype of function parse_crashkernel() 2023-10-04 10:41:58 -07:00
firmware.c
fpu.S powerpc: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-16 23:54:48 +10:00
head_8xx.S powerpc: remove unneeded #include <asm/export.h> 2023-08-16 23:54:48 +10:00
head_32.h powerpc: add a definition for the marker offset within the interrupt frame 2022-12-02 17:54:08 +11:00
head_40x.S powerpc/40x: Introduce _PAGE_READ and remove _PAGE_USER 2023-10-19 17:12:47 +11:00
head_44x.S powerpc/44x: Introduce _PAGE_READ and remove _PAGE_USER 2023-10-19 17:12:46 +11:00
head_64.S powerpc updates for 6.6 2023-08-31 12:43:10 -07:00
head_85xx.S powerpc/e500: Introduce _PAGE_READ and remove _PAGE_USER 2023-10-19 17:12:46 +11:00
head_book3s_32.S powerpc/32s: Introduce _PAGE_READ and remove _PAGE_USER 2023-10-19 17:12:47 +11:00
head_booke.h powerpc/32: Include thread_info.h in head_booke.h 2023-04-11 23:13:33 +10:00
hw_breakpoint_constraints.c powerpc/watchpoint: Disable pagefaults when getting user instruction 2023-09-18 12:23:47 +10:00
hw_breakpoint.c powerpc/watchpoints: Annotate atomic context in more places 2023-09-18 12:23:47 +10:00
idle_6xx.S powerpc/mm: Switch obsolete dssall to .long 2021-12-23 22:35:13 +11:00
idle_64e.S powerpc: add ISA v3.0 / v3.1 wait opcode macro 2022-09-28 19:22:10 +10:00
idle_85xx.S powerpc: Cleanup idle for e500 2022-09-26 23:00:14 +10:00
idle_book3s.S
idle.c powerpc: Remove now superfluous sentinel element from ctl_table arrays 2023-10-10 15:22:02 -07:00
ima_arch.c integrity: Always reference the blacklist keyring with appraisal 2023-08-01 08:17:25 -04:00
interrupt_64.S powerpc: Fix merge conflict between pcrel and copy_thread changes 2023-04-26 16:20:16 +10:00
interrupt.c powerpc: Mark [h]ssr_valid accesses in check_return_regs_valid 2023-06-21 15:13:57 +10:00
io-workarounds.c
io.c powerpc: Cast away __iomem in low level IO routines 2023-10-19 17:16:20 +11:00
iomap.c
iommu.c IOMMU Updates for Linux v6.7 2023-11-09 13:37:28 -08:00
irq_64.c powerpc/64: Don't call trace_hardirqs_on() in prep_irq_for_idle() 2023-04-20 13:21:49 +10:00
irq.c powerpc/64: vmlinux support building with PCREL addresing 2023-04-20 12:59:21 +10:00
isa-bridge.c powerpc/isa-bridge: Fix ISA mapping when "ranges" is not present 2023-05-08 22:57:10 +10:00
jump_label.c
kdebugfs.c
kgdb.c powerpc: add definition for pt_regs offset within an interrupt frame 2022-12-02 17:54:08 +11:00
kprobes-ftrace.c
kprobes.c powerpc updates for 6.2 2022-12-19 07:13:33 -06:00
kvm_emul.S
kvm.c powerpc: Remove CONFIG_PPC_BOOK3E_MMU 2022-09-26 23:00:14 +10:00
l2cr_6xx.S powerpc/mm: Switch obsolete dssall to .long 2021-12-23 22:35:13 +11:00
legacy_serial.c powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
Makefile powerpc/64: Rename entry_64.S to prom_entry_64.S 2023-06-15 14:04:19 +10:00
mce_power.c powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
mce.c powerpc/mce: log the error for all unrecoverable errors 2023-02-10 22:17:34 +11:00
misc_32.S powerpc: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-16 23:54:48 +10:00
misc_64.S powerpc: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-16 23:54:48 +10:00
misc.S powerpc: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-16 23:54:48 +10:00
module_32.c module: replace module_layout with module_memory 2023-03-09 12:55:15 -08:00
module_64.c powerpc/ftrace: Add support for -fpatchable-function-entry 2023-08-22 00:09:06 +10:00
module.c powerpc: Replace PPC64_ELF_ABI_v{1/2} by CONFIG_PPC64_ELF_ABI_V{1/2} 2022-05-19 23:11:29 +10:00
msi.c
note.S
nvram_64.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
of_platform.c powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
optprobes_head.S powerpc: add definition for pt_regs offset within an interrupt frame 2022-12-02 17:54:08 +11:00
optprobes.c powerpc/kprobes: Have optimized_callback() use preempt_enable() 2022-11-24 23:31:49 +11:00
paca.c docs: move powerpc under arch 2023-10-10 13:35:55 -06:00
pci_32.c powerpc/pci: Add option for using pci_to_OF_bus_map 2023-02-07 20:15:23 +11:00
pci_64.c powerpc/pci_64: Init pcibios subsys a bit later 2023-03-14 23:36:27 +11:00
pci_dn.c powerpc/pci_dn: Add missing of_node_put() 2022-09-05 17:30:25 +10:00
pci_of_scan.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
pci-common.c powerpc: Remove file parameter from phys_mem_access_prot() 2023-11-06 15:21:33 +11:00
pci-hotplug.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
pmc.c powerpc/85xx: Mark some functions static and add missing includes to fix no previous prototype error 2023-08-23 15:55:21 +10:00
ppc_save_regs.S powerpc: update ppc_save_regs to save current r1 in pt_regs 2023-06-19 17:37:14 +10:00
proc_powerpc.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
process.c powerpc: Hide empty pt_regs at base of the stack 2023-10-19 21:38:29 +11:00
prom_entry_64.S powerpc/64: Rename entry_64.S to prom_entry_64.S 2023-06-15 14:04:19 +10:00
prom_init_check.sh kasan, powerpc: don't rename memintrinsics if compiler adds prefixes 2023-03-23 17:18:33 -07:00
prom_init.c powerpc: Annotate endianness of various variables and functions 2023-10-19 17:12:47 +11:00
prom_parse.c
prom.c powerpc/dexcr: Add initial Dynamic Execution Control Register (DEXCR) support 2023-06-19 17:36:25 +10:00
reloc_32.S
reloc_64.S powerpc/64: avoid using r13 in relocate 2022-09-28 19:22:13 +10:00
rtas_entry.S powerpc/rtas: Fix RTAS MSR[HV] handling for Cell 2022-08-26 08:41:54 +10:00
rtas_flash.c powerpc/rtas_flash: allow user copy to flash block cache objects 2023-08-17 09:46:14 +10:00
rtas_pci.c powerpc/rtas_pci: rename and properly expose config access APIs 2023-11-28 21:49:45 +11:00
rtas-proc.c powerpc/rtas: Fix ppc_rtas_rmo_buf_show() kernel-doc 2023-11-07 13:13:45 +11:00
rtas-rtc.c powerpc/rtas: arch-wide function token lookup conversions 2023-02-13 22:35:03 +11:00
rtas.c powerpc/rtas: Move token validation from block_rtas_call() to sys_rtas() 2023-12-13 21:38:20 +11:00
rtasd.c powerpc/rtas: arch-wide function token lookup conversions 2023-02-13 22:35:03 +11:00
secure_boot.c
security.c powerpc/security: Fix Speculation_Store_Bypass reporting on Power10 2023-07-10 09:47:47 +10:00
secvar-ops.c powerpc/secvar: Warn and error if multiple secvar ops are set 2023-02-12 22:12:36 +11:00
secvar-sysfs.c powerpc/secvar: Don't print error on ENOENT when reading variables 2023-02-12 22:12:37 +11:00
setup_32.c powerpc: Change CONFIG_E500 to CONFIG_PPC_E500 2022-09-26 23:00:13 +10:00
setup_64.c powerpc: Use NULL instead of 0 for null pointers 2023-10-19 17:12:47 +11:00
setup-common.c TTY/Serial changes for 6.7-rc1 2023-11-03 15:44:25 -10:00
setup.h powerpc: Remove CONFIG_PPC_BOOK3E 2022-09-26 23:00:13 +10:00
signal_32.c powerpc/signal32: Force inlining of __unsafe_save_user_regs() and save_tm_user_regs_unsafe() 2023-06-09 23:29:51 +10:00
signal_64.c powerpc/signal: Update comment for clarity 2022-07-28 16:22:14 +10:00
signal.c powerpc: Replace GPL 2.0+ README.legal boilerplate with SPDX 2023-09-19 20:05:58 +10:00
signal.h powerpc: Replace GPL 2.0+ README.legal boilerplate with SPDX 2023-09-19 20:05:58 +10:00
smp-tbsync.c
smp.c RCU pull request for v6.7 2023-10-30 18:01:41 -10:00
stacktrace.c powerpc/stacktrace: Fix arch_stack_walk_reliable() 2023-09-22 20:29:27 +10:00
static_call.c
suspend.c
switch.S powerpc: merge 32-bit and 64-bit _switch implementation 2023-06-15 14:03:55 +10:00
swsusp_32.S powerpc/32: Fix objtool unannotated intra-function call warnings 2022-11-18 19:00:06 +11:00
swsusp_64.c powerpc/suspend: Add prototype for do_after_copyback() 2023-11-30 13:15:49 +11:00
swsusp_85xx.S powerpc: Remove CONFIG_FSL_BOOKE 2022-09-26 22:47:37 +10:00
swsusp_asm64.S powerpc/64: asm use consistent global variable declaration and access 2022-09-28 19:22:12 +10:00
swsusp.c
sys_ppc32.c powerpc/32: fix syscall wrappers with 64-bit arguments 2022-11-01 10:24:09 +11:00
syscall.c powerpc/kuap: MMU_FTR_BOOK3S_KUAP becomes MMU_FTR_KUAP 2023-08-02 22:22:18 +10:00
syscalls.c powerpc: Adopt SYSCALL_DEFINE for arch-specific syscall handlers 2022-09-28 19:22:08 +10:00
sysfs.c powerpc/sysfs: move to use bus_get_dev_root() 2023-03-17 15:29:34 +01:00
systbl.c powerpc: Don't add __powerpc_ prefix to syscall entry points 2022-10-07 00:59:54 +11:00
tau_6xx.c powerpc, workqueue: Use alloc_ordered_workqueue() to create ordered workqueues 2023-05-08 13:52:27 -10:00
time.c powerpc: Make generic_calibrate_decr() the default 2023-03-16 08:56:48 +11:00
tm.S powerpc: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-16 23:54:48 +10:00
traps.c powerpc: Fix build error due to is_valid_bugaddr() 2023-12-01 21:15:33 +11:00
ucall.S powerpc: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-16 23:54:48 +10:00
udbg_16550.c powerpc: Remove orphaned reg_a2.h 2023-11-27 22:01:14 +11:00
udbg.c powerpc: Add support for early debugging via Serial 16550 console 2022-09-28 19:22:09 +10:00
uprobes.c powerpc: Reject probes on instructions that can't be single stepped 2022-05-06 00:00:20 +10:00
vdso32_wrapper.S powerpc/vdso: Merge vdso64 and vdso32 into a single directory 2022-02-12 22:47:43 +11:00
vdso64_wrapper.S powerpc/vdso: Merge vdso64 and vdso32 into a single directory 2022-02-12 22:47:43 +11:00
vdso.c mm: remove zap_page_range and create zap_vma_pages 2023-01-18 17:12:55 -08:00
vecemu.c powerpc/inst: Define ppc_inst_t 2021-12-09 22:41:21 +11:00
vector.S powerpc: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-16 23:54:48 +10:00
vmlinux.lds.S powerpc/ftrace: Extend ftrace support for large kernels to ppc32 2023-08-22 00:09:05 +10:00
watchdog.c nmi_backtrace: allow excluding an arbitrary CPU 2023-08-18 10:19:00 -07:00