ACPI: bus: Set driver_data to NULL every time .add() fails
authorMichal Wilczynski <michal.wilczynski@intel.com>
Mon, 3 Jul 2023 08:02:45 +0000 (11:02 +0300)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 14 Jul 2023 16:58:34 +0000 (18:58 +0200)
Most ACPI drivers set driver_data in their .add() callbacks, but usually
they don't clear it in the error code path.

Set driver_data to NULL in acpi_device_probe() to prevent stale pointers
from staying around.

Signed-off-by: Michal Wilczynski <michal.wilczynski@intel.com>
[ rjw: Subject and changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/bus.c

index b568883..0168b3a 100644 (file)
@@ -1029,8 +1029,10 @@ static int acpi_device_probe(struct device *dev)
                return -ENOSYS;
 
        ret = acpi_drv->ops.add(acpi_dev);
-       if (ret)
+       if (ret) {
+               acpi_dev->driver_data = NULL;
                return ret;
+       }
 
        pr_debug("Driver [%s] successfully bound to device [%s]\n",
                 acpi_drv->name, acpi_dev->pnp.bus_id);