]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
platform/x86: int3472: Check for adev == NULL
authorHans de Goede <hdegoede@redhat.com>
Mon, 9 Dec 2024 22:05:19 +0000 (23:05 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Feb 2025 12:49:33 +0000 (13:49 +0100)
[ Upstream commit cd2fd6eab480dfc247b737cf7a3d6b009c4d0f1c ]

Not all devices have an ACPI companion fwnode, so adev might be NULL. This
can e.g. (theoretically) happen when a user manually binds one of
the int3472 drivers to another i2c/platform device through sysfs.

Add a check for adev not being set and return -ENODEV in that case to
avoid a possible NULL pointer deref in skl_int3472_get_acpi_buffer().

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20241209220522.25288-1-hdegoede@redhat.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/platform/x86/intel/int3472/discrete.c
drivers/platform/x86/intel/int3472/tps68470.c

index c42c3faa2c32da504f6c0757588b5ff77bb9bc32..0f16436e5804b342c7f2ef3d2e7ea39c3cefb18e 100644 (file)
@@ -359,6 +359,9 @@ static int skl_int3472_discrete_probe(struct platform_device *pdev)
        struct int3472_cldb cldb;
        int ret;
 
+       if (!adev)
+               return -ENODEV;
+
        ret = skl_int3472_fill_cldb(adev, &cldb);
        if (ret) {
                dev_err(&pdev->dev, "Couldn't fill CLDB structure\n");
index 5b8d1a9620a5d06e0193fa16a9d832e17775dbc3..82fb2fbc1000f39c952fe04611b3fd910434b7a0 100644 (file)
@@ -152,6 +152,9 @@ static int skl_int3472_tps68470_probe(struct i2c_client *client)
        int ret;
        int i;
 
+       if (!adev)
+               return -ENODEV;
+
        n_consumers = skl_int3472_fill_clk_pdata(&client->dev, &clk_pdata);
        if (n_consumers < 0)
                return n_consumers;