aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/industrialio-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/iio/industrialio-core.c')
-rw-r--r--drivers/staging/iio/industrialio-core.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/staging/iio/industrialio-core.c b/drivers/staging/iio/industrialio-core.c
index e4824fe8b40..3a2d0802662 100644
--- a/drivers/staging/iio/industrialio-core.c
+++ b/drivers/staging/iio/industrialio-core.c
@@ -594,6 +594,7 @@ struct iio_dev *iio_allocate_device(int sizeof_priv)
594 device_initialize(&dev->dev); 594 device_initialize(&dev->dev);
595 dev_set_drvdata(&dev->dev, (void *)dev); 595 dev_set_drvdata(&dev->dev, (void *)dev);
596 mutex_init(&dev->mlock); 596 mutex_init(&dev->mlock);
597 mutex_init(&dev->info_exist_lock);
597 598
598 dev->id = ida_simple_get(&iio_ida, 0, 0, GFP_KERNEL); 599 dev->id = ida_simple_get(&iio_ida, 0, 0, GFP_KERNEL);
599 if (dev->id < 0) { 600 if (dev->id < 0) {
@@ -718,6 +719,9 @@ EXPORT_SYMBOL(iio_device_register);
718 719
719void iio_device_unregister(struct iio_dev *indio_dev) 720void iio_device_unregister(struct iio_dev *indio_dev)
720{ 721{
722 mutex_lock(&indio_dev->info_exist_lock);
723 indio_dev->info = NULL;
724 mutex_unlock(&indio_dev->info_exist_lock);
721 device_unregister(&indio_dev->dev); 725 device_unregister(&indio_dev->dev);
722} 726}
723EXPORT_SYMBOL(iio_device_unregister); 727EXPORT_SYMBOL(iio_device_unregister);