]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
tpm_crb: Check ACPI_COMPANION() against NULL during probe
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 12 May 2026 16:16:23 +0000 (18:16 +0200)
committerJarkko Sakkinen <jarkko@kernel.org>
Sun, 21 Jun 2026 01:25:28 +0000 (04:25 +0300)
Every platform driver can be forced to match a device that doesn't match
its list of device IDs because of device_match_driver_override(), so
platform drivers that rely on the existence of a device's ACPI companion
object need to verify its presence.

Accordingly, add a requisite ACPI_COMPANION() check against NULL to the
tpm_crb driver.

Fixes: 48fe2cddc85c ("tpm_crb: Convert ACPI driver to a platform one")
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://lore.kernel.org/r/2848144.mvXUDI8C0e@rafael.j.wysocki
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
drivers/char/tpm/tpm_crb.c

index 7d1377e8e616a1e5b2cfcd5a843dcbd823dde369..ceb4100ba400f4781551e6b56972eb7dc6f0c96b 100644 (file)
@@ -786,8 +786,8 @@ static int crb_map_pluton(struct device *dev, struct crb_priv *priv,
 static int crb_acpi_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
-       struct acpi_device *device = ACPI_COMPANION(dev);
        struct acpi_table_tpm2 *buf;
+       struct acpi_device *device;
        struct crb_priv *priv;
        struct tpm_chip *chip;
        struct tpm2_crb_smc *crb_smc;
@@ -797,6 +797,10 @@ static int crb_acpi_probe(struct platform_device *pdev)
        u32 sm;
        int rc;
 
+       device = ACPI_COMPANION(dev);
+       if (!device)
+               return -ENODEV;
+
        status = acpi_get_table(ACPI_SIG_TPM2, 1,
                                (struct acpi_table_header **) &buf);
        if (ACPI_FAILURE(status) || buf->header.length < sizeof(*buf)) {