2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00
linux/drivers/char/tpm
Jarkko Sakkinen a3a860bc0f tpm: Change to kvalloc() in eventlog/acpi.c
The following failure was reported on HPE ProLiant D320:

[   10.693310][    T1] tpm_tis STM0925:00: 2.0 TPM (device-id 0x3, rev-id 0)
[   10.848132][    T1] ------------[ cut here ]------------
[   10.853559][    T1] WARNING: CPU: 59 PID: 1 at mm/page_alloc.c:4727 __alloc_pages_noprof+0x2ca/0x330
[   10.862827][    T1] Modules linked in:
[   10.866671][    T1] CPU: 59 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.12.0-lp155.2.g52785e2-default #1 openSUSE Tumbleweed (unreleased) 588cd98293a7c9eba9013378d807364c088c9375
[   10.882741][    T1] Hardware name: HPE ProLiant DL320 Gen12/ProLiant DL320 Gen12, BIOS 1.20 10/28/2024
[   10.892170][    T1] RIP: 0010:__alloc_pages_noprof+0x2ca/0x330
[   10.898103][    T1] Code: 24 08 e9 4a fe ff ff e8 34 36 fa ff e9 88 fe ff ff 83 fe 0a 0f 86 b3 fd ff ff 80 3d 01 e7 ce 01 00 75 09 c6 05 f8 e6 ce 01 01 <0f> 0b 45 31 ff e9 e5 fe ff ff f7 c2 00 00 08 00 75 42 89 d9 80 e1
[   10.917750][    T1] RSP: 0000:ffffb7cf40077980 EFLAGS: 00010246
[   10.923777][    T1] RAX: 0000000000000000 RBX: 0000000000040cc0 RCX: 0000000000000000
[   10.931727][    T1] RDX: 0000000000000000 RSI: 000000000000000c RDI: 0000000000040cc0

The above transcript shows that ACPI pointed a 16 MiB buffer for the log
events because RSI maps to the 'order' parameter of __alloc_pages_noprof().
Address the bug by moving from devm_kmalloc() to devm_add_action() and
kvmalloc() and devm_add_action().

Suggested-by: Ard Biesheuvel <ardb@kernel.org>
Cc: stable@vger.kernel.org # v2.6.16+
Fixes: 55a82ab318 ("[PATCH] tpm: add bios measurement log")
Reported-by: Andy Liang <andy.liang@hpe.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219495
Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Takashi Iwai <tiwai@suse.de>
Tested-by: Andy Liang <andy.liang@hpe.com>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
2025-01-23 10:52:23 +02:00
..
eventlog tpm: Change to kvalloc() in eventlog/acpi.c 2025-01-23 10:52:23 +02:00
st33zp24 tpm: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-09-17 18:56:37 +03:00
Kconfig tpm: atmel: Drop PPC64 specific MMIO setup 2024-11-22 00:56:50 +02:00
Makefile tpm: Address !chip->auth in tpm_buf_append_name() 2024-07-05 02:12:27 +03:00
tpm1-cmd.c tpm: Add upgrade/reduced mode support for TPM1.2 modules 2022-08-03 23:56:19 +03:00
tpm2-cmd.c tpm: Opt-in in disable PCR integrity protection 2024-11-13 21:10:45 +02:00
tpm2-sessions.c tpm: ibmvtpm: Set TPM_OPS_AUTO_STARTUP flag on driver 2024-11-22 00:48:26 +02:00
tpm2-space.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
tpm_atmel.c tpm: atmel: Drop PPC64 specific MMIO setup 2024-11-22 00:56:50 +02:00
tpm_crb.c tpm: Enable hwrng only for Pluton on AMD CPUs 2023-09-04 21:57:59 +03:00
tpm_ftpm_tee.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
tpm_ftpm_tee.h tpm/tpm_ftpm_tee: A driver for firmware TPM running inside TEE 2019-09-02 17:08:35 +03:00
tpm_i2c_atmel.c tpm: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-09-17 18:56:37 +03:00
tpm_i2c_infineon.c tpm: Switch i2c drivers back to use .probe() 2023-07-28 18:12:40 +00:00
tpm_i2c_nuvoton.c Normalise "name (ad@dr)" MODULE_AUTHORs to "name <ad@dr>" 2024-03-06 13:07:39 -08:00
tpm_ibmvtpm.c tpm: ibmvtpm: Set TPM_OPS_AUTO_STARTUP flag on driver 2024-11-22 00:48:26 +02:00
tpm_ibmvtpm.h tpm: ibmvtpm: Avoid error message when process gets signal while waiting 2021-08-23 19:55:42 +03:00
tpm_infineon.c char: tpm: Keep TPM_INF_IO_PORT define for HAS_IOPORT=n 2024-05-09 22:30:50 +03:00
tpm_nsc.c Normalise "name (ad@dr)" MODULE_AUTHORs to "name <ad@dr>" 2024-03-06 13:07:39 -08:00
tpm_ppi.c char: move from strlcpy with unused retval to strscpy 2022-10-05 00:25:56 +03:00
tpm_tis_core.c tpm_tis: Do *not* flush uninitialized work 2024-06-05 01:18:01 +03:00
tpm_tis_core.h tpm: Switch to new Intel CPU model defines 2024-06-05 04:55:04 +03:00
tpm_tis_i2c_cr50.c char: tpm: cr50: Add new device/vendor ID 0x50666666 2024-11-22 00:48:27 +02:00
tpm_tis_i2c.c tpm: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-09-17 18:56:37 +03:00
tpm_tis_spi_cr50.c tpm: Remove read16/read32/write32 calls from tpm_tis_phy_ops 2022-05-23 18:47:49 +03:00
tpm_tis_spi_main.c tpm_tis_spi: add missing attpm20p SPI device ID entry 2024-07-01 15:50:02 +00:00
tpm_tis_spi.h tpm: Remove read16/read32/write32 calls from tpm_tis_phy_ops 2022-05-23 18:47:49 +03:00
tpm_tis_synquacer.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
tpm_tis.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
tpm_vtpm_proxy.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
tpm-buf.c tpm: Opt-in in disable PCR integrity protection 2024-11-13 21:10:45 +02:00
tpm-chip.c tpm: Lock TPM chip in tpm_pm_suspend() first 2024-11-04 01:59:08 +02:00
tpm-dev-common.c tpm: Lazily flush the auth session 2024-10-29 00:46:20 +02:00
tpm-dev.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
tpm-dev.h tpm: Handle negative priv->response_len in tpm_common_read() 2020-01-08 18:11:09 +02:00
tpm-interface.c tpm: Lock TPM chip in tpm_pm_suspend() first 2024-11-04 01:59:08 +02:00
tpm-sysfs.c tpm: add the null key name as a sysfs export 2024-05-09 22:30:52 +03:00
tpm.h tpm: Switch to new Intel CPU model defines 2024-06-05 04:55:04 +03:00
tpmrm-dev.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
xen-tpmfront.c xen: make remove callback of xen driver void returned 2022-12-15 16:06:10 +01:00