On Mon, Nov 1, 2021 at 12:31 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > On 10/25/21 13:31, Andy Shevchenko wrote: > > On Mon, Oct 25, 2021 at 12:42 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote: ... > >> +int skl_int3472_get_sensor_adev_and_name(struct device *dev, > >> + struct acpi_device **sensor_adev_ret, > >> + const char **name_ret) > >> +{ > >> + struct acpi_device *adev = ACPI_COMPANION(dev); > >> + struct acpi_device *sensor; > >> + int ret = 0; > >> + > >> + sensor = acpi_dev_get_first_consumer_dev(adev); > >> + if (!sensor) { > >> + dev_err(dev, "INT3472 seems to have no dependents.\n"); > >> + return -ENODEV; > >> + } > >> + > >> + *name_ret = devm_kasprintf(dev, GFP_KERNEL, I2C_DEV_NAME_FORMAT, > >> + acpi_dev_name(sensor)); > >> + if (!*name_ret) > >> + ret = -ENOMEM; > >> + > >> + if (ret == 0 && sensor_adev_ret) > >> + *sensor_adev_ret = sensor; > >> + else > >> + acpi_dev_put(sensor); > >> + > >> + return ret; > > > > The error path is twisted a bit including far staying ret=0 assignment. > > > > Can it be > > > > int ret; > > ... > > *name_ret = devm_kasprintf(dev, GFP_KERNEL, I2C_DEV_NAME_FORMAT, > > acpi_dev_name(sensor)); > > if (!*name_ret) { > > acpi_dev_put(sensor); > > return -ENOMEM; > > } > > > > if (sensor_adev_ret) > > *sensor_adev_ret = sensor; > > > > return 0; > > > > ? > > That misses an acpi_dev_put(sensor) when sensor_adev_ret == NULL. else acpi_dev_put(...); ? -- With Best Regards, Andy Shevchenko