]> git.baikalelectronics.ru Git - kernel.git/commit
iio: trigger: Fix reference counting
authorLars-Peter Clausen <lars@metafoo.de>
Sun, 24 Oct 2021 09:27:00 +0000 (11:27 +0200)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Wed, 17 Nov 2021 17:52:35 +0000 (17:52 +0000)
commit8cbd87e73bcb16a54d4a0a2fc21f189e8b4919fa
tree44e9582e511d9f6e856c793bd9e2cce5d01eb50c
parent527f0fd597a10b245f0c4426584998a13b09cfc9
iio: trigger: Fix reference counting

In viio_trigger_alloc() device_initialize() is used to set the initial
reference count of the trigger to 1. Then another get_device() is called on
trigger. This sets the reference count to 2 before the trigger is returned.

iio_trigger_free(), which is the matching API to viio_trigger_alloc(),
calls put_device() which decreases the reference count by 1. But the second
reference count acquired in viio_trigger_alloc() is never dropped.

As a result the iio_trigger_release() function is never called and the
memory associated with the trigger is never freed.

Since there is no reason for the trigger to start its lifetime with two
reference counts just remove the extra get_device() in
viio_trigger_alloc().

Fixes: 6c3d381a0206 ("staging:iio:triggers. Add a reference get to the core for triggers.")
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Nuno Sá <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20211024092700.6844-2-lars@metafoo.de
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/industrialio-trigger.c