diff options
author | Jonathan Cameron <jic23@cam.ac.uk> | 2011-08-30 07:41:18 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-09-06 19:00:29 -0400 |
commit | 3e39440789adef103422ce201538b4da8745fe8e (patch) | |
tree | 3cf742695f53ec91f0ff87ab3a9db513383c53ae /drivers/staging | |
parent | acc131fa9f9d81b2a031ab1e7115856ba33e057d (diff) |
staging:iio:fix using iio_priv or iio_dev after iio_unregister_device
This includes calling iio_free_device as that should only be called
before the device has been registered.
Also one case of iio_free_device being called on a registered device.
This has been pulled out of the reworking attributes patch.
Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging')
-rw-r--r-- | drivers/staging/iio/accel/adis16201_core.c | 2 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16203_core.c | 2 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16204_core.c | 2 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16209_core.c | 2 | ||||
-rw-r--r-- | drivers/staging/iio/accel/adis16240_core.c | 2 | ||||
-rw-r--r-- | drivers/staging/iio/adc/ad7291.c | 1 | ||||
-rw-r--r-- | drivers/staging/iio/adc/ad7314.c | 1 | ||||
-rw-r--r-- | drivers/staging/iio/adc/ad7816.c | 1 | ||||
-rw-r--r-- | drivers/staging/iio/adc/adt7310.c | 1 | ||||
-rw-r--r-- | drivers/staging/iio/adc/adt75.c | 1 | ||||
-rw-r--r-- | drivers/staging/iio/addac/adt7316.c | 1 | ||||
-rw-r--r-- | drivers/staging/iio/dac/ad5624r_spi.c | 6 | ||||
-rw-r--r-- | drivers/staging/iio/gyro/adis16260_core.c | 2 | ||||
-rw-r--r-- | drivers/staging/iio/magnetometer/ak8975.c | 1 | ||||
-rw-r--r-- | drivers/staging/iio/resolver/ad2s1210.c | 2 |
15 files changed, 10 insertions, 17 deletions
diff --git a/drivers/staging/iio/accel/adis16201_core.c b/drivers/staging/iio/accel/adis16201_core.c index 30ac7e2ee02..1e19aba115e 100644 --- a/drivers/staging/iio/accel/adis16201_core.c +++ b/drivers/staging/iio/accel/adis16201_core.c | |||
@@ -538,8 +538,8 @@ static int adis16201_remove(struct spi_device *spi) | |||
538 | 538 | ||
539 | adis16201_remove_trigger(indio_dev); | 539 | adis16201_remove_trigger(indio_dev); |
540 | iio_ring_buffer_unregister(indio_dev); | 540 | iio_ring_buffer_unregister(indio_dev); |
541 | iio_device_unregister(indio_dev); | ||
542 | adis16201_unconfigure_ring(indio_dev); | 541 | adis16201_unconfigure_ring(indio_dev); |
542 | iio_device_unregister(indio_dev); | ||
543 | 543 | ||
544 | return 0; | 544 | return 0; |
545 | } | 545 | } |
diff --git a/drivers/staging/iio/accel/adis16203_core.c b/drivers/staging/iio/accel/adis16203_core.c index dc52462ecf3..2a658f0e788 100644 --- a/drivers/staging/iio/accel/adis16203_core.c +++ b/drivers/staging/iio/accel/adis16203_core.c | |||
@@ -492,8 +492,8 @@ static int adis16203_remove(struct spi_device *spi) | |||
492 | 492 | ||
493 | adis16203_remove_trigger(indio_dev); | 493 | adis16203_remove_trigger(indio_dev); |
494 | iio_ring_buffer_unregister(indio_dev); | 494 | iio_ring_buffer_unregister(indio_dev); |
495 | iio_device_unregister(indio_dev); | ||
496 | adis16203_unconfigure_ring(indio_dev); | 495 | adis16203_unconfigure_ring(indio_dev); |
496 | iio_device_unregister(indio_dev); | ||
497 | 497 | ||
498 | return 0; | 498 | return 0; |
499 | } | 499 | } |
diff --git a/drivers/staging/iio/accel/adis16204_core.c b/drivers/staging/iio/accel/adis16204_core.c index dedccddeb58..42a37bb0136 100644 --- a/drivers/staging/iio/accel/adis16204_core.c +++ b/drivers/staging/iio/accel/adis16204_core.c | |||
@@ -567,8 +567,8 @@ static int adis16204_remove(struct spi_device *spi) | |||
567 | 567 | ||
568 | adis16204_remove_trigger(indio_dev); | 568 | adis16204_remove_trigger(indio_dev); |
569 | iio_ring_buffer_unregister(indio_dev); | 569 | iio_ring_buffer_unregister(indio_dev); |
570 | iio_device_unregister(indio_dev); | ||
571 | adis16204_unconfigure_ring(indio_dev); | 570 | adis16204_unconfigure_ring(indio_dev); |
571 | iio_device_unregister(indio_dev); | ||
572 | 572 | ||
573 | return 0; | 573 | return 0; |
574 | } | 574 | } |
diff --git a/drivers/staging/iio/accel/adis16209_core.c b/drivers/staging/iio/accel/adis16209_core.c index d8f4b27efc7..d59a9e4803b 100644 --- a/drivers/staging/iio/accel/adis16209_core.c +++ b/drivers/staging/iio/accel/adis16209_core.c | |||
@@ -542,8 +542,8 @@ static int adis16209_remove(struct spi_device *spi) | |||
542 | 542 | ||
543 | adis16209_remove_trigger(indio_dev); | 543 | adis16209_remove_trigger(indio_dev); |
544 | iio_ring_buffer_unregister(indio_dev); | 544 | iio_ring_buffer_unregister(indio_dev); |
545 | iio_device_unregister(indio_dev); | ||
546 | adis16209_unconfigure_ring(indio_dev); | 545 | adis16209_unconfigure_ring(indio_dev); |
546 | iio_device_unregister(indio_dev); | ||
547 | 547 | ||
548 | return 0; | 548 | return 0; |
549 | } | 549 | } |
diff --git a/drivers/staging/iio/accel/adis16240_core.c b/drivers/staging/iio/accel/adis16240_core.c index f6fa0ba4973..b6504f1479b 100644 --- a/drivers/staging/iio/accel/adis16240_core.c +++ b/drivers/staging/iio/accel/adis16240_core.c | |||
@@ -596,8 +596,8 @@ static int adis16240_remove(struct spi_device *spi) | |||
596 | 596 | ||
597 | adis16240_remove_trigger(indio_dev); | 597 | adis16240_remove_trigger(indio_dev); |
598 | iio_ring_buffer_unregister(indio_dev); | 598 | iio_ring_buffer_unregister(indio_dev); |
599 | iio_device_unregister(indio_dev); | ||
600 | adis16240_unconfigure_ring(indio_dev); | 599 | adis16240_unconfigure_ring(indio_dev); |
600 | iio_device_unregister(indio_dev); | ||
601 | 601 | ||
602 | return 0; | 602 | return 0; |
603 | } | 603 | } |
diff --git a/drivers/staging/iio/adc/ad7291.c b/drivers/staging/iio/adc/ad7291.c index ac7c04ea4a2..16ddbdec912 100644 --- a/drivers/staging/iio/adc/ad7291.c +++ b/drivers/staging/iio/adc/ad7291.c | |||
@@ -857,7 +857,6 @@ static int __devexit ad7291_remove(struct i2c_client *client) | |||
857 | if (client->irq) | 857 | if (client->irq) |
858 | free_irq(client->irq, indio_dev); | 858 | free_irq(client->irq, indio_dev); |
859 | iio_device_unregister(indio_dev); | 859 | iio_device_unregister(indio_dev); |
860 | iio_free_device(indio_dev); | ||
861 | 860 | ||
862 | return 0; | 861 | return 0; |
863 | } | 862 | } |
diff --git a/drivers/staging/iio/adc/ad7314.c b/drivers/staging/iio/adc/ad7314.c index e3d38dbd846..094a4ee971c 100644 --- a/drivers/staging/iio/adc/ad7314.c +++ b/drivers/staging/iio/adc/ad7314.c | |||
@@ -240,7 +240,6 @@ static int __devexit ad7314_remove(struct spi_device *spi_dev) | |||
240 | 240 | ||
241 | dev_set_drvdata(&spi_dev->dev, NULL); | 241 | dev_set_drvdata(&spi_dev->dev, NULL); |
242 | iio_device_unregister(indio_dev); | 242 | iio_device_unregister(indio_dev); |
243 | iio_free_device(indio_dev); | ||
244 | 243 | ||
245 | return 0; | 244 | return 0; |
246 | } | 245 | } |
diff --git a/drivers/staging/iio/adc/ad7816.c b/drivers/staging/iio/adc/ad7816.c index 2706de30bc8..5a4586fbe14 100644 --- a/drivers/staging/iio/adc/ad7816.c +++ b/drivers/staging/iio/adc/ad7816.c | |||
@@ -443,7 +443,6 @@ static int __devexit ad7816_remove(struct spi_device *spi_dev) | |||
443 | gpio_free(chip->convert_pin); | 443 | gpio_free(chip->convert_pin); |
444 | gpio_free(chip->rdwr_pin); | 444 | gpio_free(chip->rdwr_pin); |
445 | iio_device_unregister(indio_dev); | 445 | iio_device_unregister(indio_dev); |
446 | iio_free_device(indio_dev); | ||
447 | 446 | ||
448 | return 0; | 447 | return 0; |
449 | } | 448 | } |
diff --git a/drivers/staging/iio/adc/adt7310.c b/drivers/staging/iio/adc/adt7310.c index e002e979035..edc65c517f6 100644 --- a/drivers/staging/iio/adc/adt7310.c +++ b/drivers/staging/iio/adc/adt7310.c | |||
@@ -864,7 +864,6 @@ static int __devexit adt7310_remove(struct spi_device *spi_dev) | |||
864 | if (spi_dev->irq) | 864 | if (spi_dev->irq) |
865 | free_irq(spi_dev->irq, indio_dev); | 865 | free_irq(spi_dev->irq, indio_dev); |
866 | iio_device_unregister(indio_dev); | 866 | iio_device_unregister(indio_dev); |
867 | iio_free_device(indio_dev); | ||
868 | 867 | ||
869 | return 0; | 868 | return 0; |
870 | } | 869 | } |
diff --git a/drivers/staging/iio/adc/adt75.c b/drivers/staging/iio/adc/adt75.c index 440c7994659..b56bfcdb337 100644 --- a/drivers/staging/iio/adc/adt75.c +++ b/drivers/staging/iio/adc/adt75.c | |||
@@ -618,7 +618,6 @@ static int __devexit adt75_remove(struct i2c_client *client) | |||
618 | if (client->irq) | 618 | if (client->irq) |
619 | free_irq(client->irq, indio_dev); | 619 | free_irq(client->irq, indio_dev); |
620 | iio_device_unregister(indio_dev); | 620 | iio_device_unregister(indio_dev); |
621 | iio_free_device(indio_dev); | ||
622 | 621 | ||
623 | return 0; | 622 | return 0; |
624 | } | 623 | } |
diff --git a/drivers/staging/iio/addac/adt7316.c b/drivers/staging/iio/addac/adt7316.c index 0cb30915c00..e60a9d65821 100644 --- a/drivers/staging/iio/addac/adt7316.c +++ b/drivers/staging/iio/addac/adt7316.c | |||
@@ -2225,7 +2225,6 @@ int __devexit adt7316_remove(struct device *dev) | |||
2225 | if (chip->bus.irq) | 2225 | if (chip->bus.irq) |
2226 | free_irq(chip->bus.irq, indio_dev); | 2226 | free_irq(chip->bus.irq, indio_dev); |
2227 | iio_device_unregister(indio_dev); | 2227 | iio_device_unregister(indio_dev); |
2228 | iio_free_device(indio_dev); | ||
2229 | 2228 | ||
2230 | return 0; | 2229 | return 0; |
2231 | } | 2230 | } |
diff --git a/drivers/staging/iio/dac/ad5624r_spi.c b/drivers/staging/iio/dac/ad5624r_spi.c index 7303bb13901..c4bdf42d544 100644 --- a/drivers/staging/iio/dac/ad5624r_spi.c +++ b/drivers/staging/iio/dac/ad5624r_spi.c | |||
@@ -262,12 +262,12 @@ static int __devinit ad5624r_probe(struct spi_device *spi) | |||
262 | indio_dev->info = &ad5624r_info; | 262 | indio_dev->info = &ad5624r_info; |
263 | indio_dev->modes = INDIO_DIRECT_MODE; | 263 | indio_dev->modes = INDIO_DIRECT_MODE; |
264 | 264 | ||
265 | ret = iio_device_register(indio_dev); | 265 | ret = ad5624r_spi_write(spi, AD5624R_CMD_INTERNAL_REFER_SETUP, 0, |
266 | !!voltage_uv, 16); | ||
266 | if (ret) | 267 | if (ret) |
267 | goto error_free_dev; | 268 | goto error_free_dev; |
268 | 269 | ||
269 | ret = ad5624r_spi_write(spi, AD5624R_CMD_INTERNAL_REFER_SETUP, 0, | 270 | ret = iio_device_register(indio_dev); |
270 | !!voltage_uv, 16); | ||
271 | if (ret) | 271 | if (ret) |
272 | goto error_free_dev; | 272 | goto error_free_dev; |
273 | 273 | ||
diff --git a/drivers/staging/iio/gyro/adis16260_core.c b/drivers/staging/iio/gyro/adis16260_core.c index ed3b6db21f1..6ea6d58fd1c 100644 --- a/drivers/staging/iio/gyro/adis16260_core.c +++ b/drivers/staging/iio/gyro/adis16260_core.c | |||
@@ -677,8 +677,8 @@ static int adis16260_remove(struct spi_device *spi) | |||
677 | 677 | ||
678 | adis16260_remove_trigger(indio_dev); | 678 | adis16260_remove_trigger(indio_dev); |
679 | iio_ring_buffer_unregister(indio_dev); | 679 | iio_ring_buffer_unregister(indio_dev); |
680 | iio_device_unregister(indio_dev); | ||
681 | adis16260_unconfigure_ring(indio_dev); | 680 | adis16260_unconfigure_ring(indio_dev); |
681 | iio_device_unregister(indio_dev); | ||
682 | 682 | ||
683 | err_ret: | 683 | err_ret: |
684 | return ret; | 684 | return ret; |
diff --git a/drivers/staging/iio/magnetometer/ak8975.c b/drivers/staging/iio/magnetometer/ak8975.c index 43936cb4381..0697ab3c422 100644 --- a/drivers/staging/iio/magnetometer/ak8975.c +++ b/drivers/staging/iio/magnetometer/ak8975.c | |||
@@ -547,7 +547,6 @@ static int ak8975_remove(struct i2c_client *client) | |||
547 | int eoc_gpio = data->eoc_gpio; | 547 | int eoc_gpio = data->eoc_gpio; |
548 | 548 | ||
549 | iio_device_unregister(indio_dev); | 549 | iio_device_unregister(indio_dev); |
550 | iio_free_device(indio_dev); | ||
551 | 550 | ||
552 | if (eoc_gpio) | 551 | if (eoc_gpio) |
553 | gpio_free(eoc_gpio); | 552 | gpio_free(eoc_gpio); |
diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c index f8459e8e855..5e83227da4b 100644 --- a/drivers/staging/iio/resolver/ad2s1210.c +++ b/drivers/staging/iio/resolver/ad2s1210.c | |||
@@ -784,8 +784,8 @@ static int __devexit ad2s1210_remove(struct spi_device *spi) | |||
784 | { | 784 | { |
785 | struct iio_dev *indio_dev = spi_get_drvdata(spi); | 785 | struct iio_dev *indio_dev = spi_get_drvdata(spi); |
786 | struct ad2s1210_state *st = iio_priv(indio_dev); | 786 | struct ad2s1210_state *st = iio_priv(indio_dev); |
787 | iio_device_unregister(indio_dev); | ||
788 | ad2s1210_free_gpios(st); | 787 | ad2s1210_free_gpios(st); |
788 | iio_device_unregister(indio_dev); | ||
789 | 789 | ||
790 | return 0; | 790 | return 0; |
791 | } | 791 | } |