diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2013-10-24 10:41:00 +0100 |
---|---|---|
committer | Jonathan Cameron <jic23@kernel.org> | 2013-11-09 12:33:24 +0000 |
commit | fe26980e03f435164777184a91c1e5f3b4ed22a5 (patch) | |
tree | 80498933c52076c599558222b5aa0186ee1e2bb5 | |
parent | 5fa4061301d246203276a663f293c0d2beaec128 (diff) | |
download | op-kernel-dev-fe26980e03f435164777184a91c1e5f3b4ed22a5.zip op-kernel-dev-fe26980e03f435164777184a91c1e5f3b4ed22a5.tar.gz |
iio: adc: ti_am335x_adc: avoid double free of buffer.
The driver is missing the iio_buffer_attach() call. As such it will attempt
to free the buffer twice on removal.
Introduced in commit 9e69c9 ("iio: Add reference counting for buffers").
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Reported-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
-rw-r--r-- | drivers/iio/adc/ti_am335x_adc.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c index 728411e..d4d7482 100644 --- a/drivers/iio/adc/ti_am335x_adc.c +++ b/drivers/iio/adc/ti_am335x_adc.c @@ -229,12 +229,15 @@ static int tiadc_iio_buffered_hardware_setup(struct iio_dev *indio_dev, unsigned long flags, const struct iio_buffer_setup_ops *setup_ops) { + struct iio_buffer *buffer; int ret; - indio_dev->buffer = iio_kfifo_allocate(indio_dev); - if (!indio_dev->buffer) + buffer = iio_kfifo_allocate(indio_dev); + if (!buffer) return -ENOMEM; + iio_device_attach_buffer(indio_dev, buffer); + ret = request_threaded_irq(irq, pollfunc_th, pollfunc_bh, flags, indio_dev->name, indio_dev); if (ret) |