Skip to content

Commit 3177b57

Browse files
joehattorimehmetb0
authored andcommitted
iio: inkern: call iio_device_put() only on mapped devices
BugLink: https://bugs.launchpad.net/bugs/2097298 commit 64f43895b4457532a3cc524ab250b7a30739a1b1 upstream. In the error path of iio_channel_get_all(), iio_device_put() is called on all IIO devices, which can cause a refcount imbalance. Fix this error by calling iio_device_put() only on IIO devices whose refcounts were previously incremented by iio_device_get(). Fixes: 314be14 ("iio: Rename _st_ functions to loose the bit that meant the staging version.") Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp> Link: https://patch.msgid.link/20241204111342.1246706-1-joe@pf.is.s.u-tokyo.ac.jp Cc: <Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Noah Wager <noah.wager@canonical.com> Signed-off-by: Koichiro Den <koichiro.den@canonical.com>
1 parent 9a4ce44 commit 3177b57

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/iio/inkern.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ struct iio_channel *iio_channel_get_all(struct device *dev)
469469
return chans;
470470

471471
error_free_chans:
472-
for (i = 0; i < nummaps; i++)
472+
for (i = 0; i < mapind; i++)
473473
iio_device_put(chans[i].indio_dev);
474474
kfree(chans);
475475
error_ret:

0 commit comments

Comments
 (0)