diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2013-09-18 21:02:00 +0100 |
---|---|---|
committer | Jonathan Cameron <jic23@kernel.org> | 2013-09-21 12:45:07 +0100 |
commit | cadc2125e140f7122bf1b59d42486cfc778c7286 (patch) | |
tree | 9f4bffd9518d76850a981c877599cc1339de2b0e /drivers/iio/industrialio-core.c | |
parent | a87c82e454f184a9473f8cdfd4d304205f585f65 (diff) | |
download | lwn-cadc2125e140f7122bf1b59d42486cfc778c7286.tar.gz lwn-cadc2125e140f7122bf1b59d42486cfc778c7286.zip |
iio: fix: Keep a reference to the IIO device for open file descriptors
Make sure that the IIO device is not freed while we still have file descriptors
for it.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Diffstat (limited to 'drivers/iio/industrialio-core.c')
-rw-r--r-- | drivers/iio/industrialio-core.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c index 2cc0778a7328..8f7b6c9f92dc 100644 --- a/drivers/iio/industrialio-core.c +++ b/drivers/iio/industrialio-core.c @@ -970,6 +970,8 @@ static int iio_chrdev_open(struct inode *inode, struct file *filp) if (test_and_set_bit(IIO_BUSY_BIT_POS, &indio_dev->flags)) return -EBUSY; + iio_device_get(indio_dev); + filp->private_data = indio_dev; return 0; @@ -983,6 +985,8 @@ static int iio_chrdev_release(struct inode *inode, struct file *filp) struct iio_dev *indio_dev = container_of(inode->i_cdev, struct iio_dev, chrdev); clear_bit(IIO_BUSY_BIT_POS, &indio_dev->flags); + iio_device_put(indio_dev); + return 0; } |