linux/drivers/virt/coco
Dan Williams 015f04ac88 configfs-tsm-report: Fix NULL dereference of tsm_ops
commit fba4ceaa24 upstream.

Unlike sysfs, the lifetime of configfs objects is controlled by
userspace. There is no mechanism for the kernel to find and delete all
created config-items. Instead, the configfs-tsm-report mechanism has an
expectation that tsm_unregister() can happen at any time and cause
established config-item access to start failing.

That expectation is not fully satisfied. While tsm_report_read(),
tsm_report_{is,is_bin}_visible(), and tsm_report_make_item() safely fail
if tsm_ops have been unregistered, tsm_report_privlevel_store()
tsm_report_provider_show() fail to check for ops registration. Add the
missing checks for tsm_ops having been removed.

Now, in supporting the ability for tsm_unregister() to always succeed,
it leaves the problem of what to do with lingering config-items. The
expectation is that the admin that arranges for the ->remove() (unbind)
of the ${tsm_arch}-guest driver is also responsible for deletion of all
open config-items. Until that deletion happens, ->probe() (reload /
bind) of the ${tsm_arch}-guest driver fails.

This allows for emergency shutdown / revocation of attestation
interfaces, and requires coordinated restart.

Fixes: 70e6f7e2b9 ("configfs-tsm: Introduce a shared ABI for attestation reports")
Cc: stable@vger.kernel.org
Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
Cc: Steven Price <steven.price@arm.com>
Cc: Sami Mujawar <sami.mujawar@arm.com>
Cc: Borislav Petkov (AMD) <bp@alien8.de>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Reported-by: Cedric Xing <cedric.xing@intel.com>
Reviewed-by: Kai Huang <kai.huang@intel.com>
Link: https://patch.msgid.link/20250430203331.1177062-1-dan.j.williams@intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-06-27 11:11:22 +01:00
..
efi_secret virt: efi_secret: Convert to platform remove callback returning void 2024-03-09 11:37:18 +01:00
pkvm-guest drivers/virt: pkvm: Don't fail ioremap() call if MMIO_GUARD fails 2024-12-14 20:03:17 +01:00
sev-guest virt: sev-guest: Ensure the SNP guest messages do not exceed a page 2024-08-27 10:35:38 +02:00
tdx-guest virt: tdx-guest: Just leak decrypted memory on unrecoverable errors 2025-01-02 10:34:22 +01:00
Kconfig drivers/virt: pkvm: Add initial support for running as a protected guest 2024-08-30 16:30:41 +01:00
Makefile drivers/virt: pkvm: Add initial support for running as a protected guest 2024-08-30 16:30:41 +01:00
tsm.c configfs-tsm-report: Fix NULL dereference of tsm_ops 2025-06-27 11:11:22 +01:00