mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
iio: core: Clean up device correctly on viio_trigger_alloc() failure
Move device_initialize() after all error paths in viio_trigger_alloc(). Previously, put_device() should have been called on all error paths after device_initialize(), but that was not done. Rather than adding put_device(), move device_initialize() to avoid needing to unwind it on error. In addition move trig->dev initialization to just before device_initialize() to related code together. Signed-off-by: Salah Triki <salah.triki@gmail.com> Reviewed-by: David Lechner <dlechner@baylibre.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
d1e13ac7c2
commit
12b393486c
|
|
@ -561,10 +561,6 @@ struct iio_trigger *viio_trigger_alloc(struct device *parent,
|
|||
if (!trig)
|
||||
return NULL;
|
||||
|
||||
trig->dev.parent = parent;
|
||||
trig->dev.type = &iio_trig_type;
|
||||
trig->dev.bus = &iio_bus_type;
|
||||
device_initialize(&trig->dev);
|
||||
INIT_WORK(&trig->reenable_work, iio_reenable_work_fn);
|
||||
|
||||
mutex_init(&trig->pool_lock);
|
||||
|
|
@ -592,6 +588,11 @@ struct iio_trigger *viio_trigger_alloc(struct device *parent,
|
|||
IRQ_NOREQUEST | IRQ_NOAUTOEN, IRQ_NOPROBE);
|
||||
}
|
||||
|
||||
trig->dev.parent = parent;
|
||||
trig->dev.type = &iio_trig_type;
|
||||
trig->dev.bus = &iio_bus_type;
|
||||
device_initialize(&trig->dev);
|
||||
|
||||
return trig;
|
||||
|
||||
free_descs:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user