* [PATCH v3 1/3] staging: iio_simple_dummy: fix init function
2015-05-30 8:20 [PATCH v3 0/3] staging: iio_simple_dummy: minor driver fixes Vladimirs Ambrosovs
@ 2015-05-30 8:20 ` Vladimirs Ambrosovs
2015-06-01 10:21 ` Jonathan Cameron
2015-05-30 8:20 ` [PATCH v3 2/3] staging: iio_simple_dummy: fix return types Vladimirs Ambrosovs
2015-05-30 8:20 ` [PATCH v3 3/3] staging: iio_simple_dummy: fix module_param type Vladimirs Ambrosovs
2 siblings, 1 reply; 7+ messages in thread
From: Vladimirs Ambrosovs @ 2015-05-30 8:20 UTC (permalink / raw)
To: sudipm.mukherjee, jic23, daniel.baluta, dan.carpenter, gregkh
Cc: cristina.opriceana, driverdev-devel, linux-iio,
Vladimirs Ambrosovs
This patch fixes the init function for the iio_simple_dummy driver.
The main issues were absence of kfree for the allocated array, and no
devices being removed in case the probe function fails, running in a loop.
Signed-off-by: Vladimirs Ambrosovs <rodriguez.twister@gmail.com>
---
drivers/staging/iio/iio_simple_dummy.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/staging/iio/iio_simple_dummy.c b/drivers/staging/iio/iio_simple_dummy.c
index b47bf9f..d0a9963 100644
--- a/drivers/staging/iio/iio_simple_dummy.c
+++ b/drivers/staging/iio/iio_simple_dummy.c
@@ -722,9 +722,16 @@ static __init int iio_dummy_init(void)
for (i = 0; i < instances; i++) {
ret = iio_dummy_probe(i);
if (ret < 0)
- return ret;
+ goto error_remove_devs;
}
return 0;
+
+error_remove_devs:
+ while (i--)
+ iio_dummy_remove(i);
+
+ kfree(iio_dummy_devs);
+ return ret;
}
module_init(iio_dummy_init);
--
2.4.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/3] staging: iio_simple_dummy: fix init function
2015-05-30 8:20 ` [PATCH v3 1/3] staging: iio_simple_dummy: fix init function Vladimirs Ambrosovs
@ 2015-06-01 10:21 ` Jonathan Cameron
0 siblings, 0 replies; 7+ messages in thread
From: Jonathan Cameron @ 2015-06-01 10:21 UTC (permalink / raw)
To: Vladimirs Ambrosovs, sudipm.mukherjee, daniel.baluta,
dan.carpenter, gregkh
Cc: cristina.opriceana, driverdev-devel, linux-iio
On 30/05/15 09:20, Vladimirs Ambrosovs wrote:
> This patch fixes the init function for the iio_simple_dummy driver.
> The main issues were absence of kfree for the allocated array, and no
> devices being removed in case the probe function fails, running in a loop.
>
> Signed-off-by: Vladimirs Ambrosovs <rodriguez.twister@gmail.com>
Thanks,
Applied to the togreg branch of iio.git which will get pushed
out as testing for the autobuilders to play with it once
I'm home from the fools errand I am currently on in a clean room
with no internet...
Jonathan
> ---
> drivers/staging/iio/iio_simple_dummy.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/staging/iio/iio_simple_dummy.c b/drivers/staging/iio/iio_simple_dummy.c
> index b47bf9f..d0a9963 100644
> --- a/drivers/staging/iio/iio_simple_dummy.c
> +++ b/drivers/staging/iio/iio_simple_dummy.c
> @@ -722,9 +722,16 @@ static __init int iio_dummy_init(void)
> for (i = 0; i < instances; i++) {
> ret = iio_dummy_probe(i);
> if (ret < 0)
> - return ret;
> + goto error_remove_devs;
> }
> return 0;
> +
> +error_remove_devs:
> + while (i--)
> + iio_dummy_remove(i);
> +
> + kfree(iio_dummy_devs);
> + return ret;
> }
> module_init(iio_dummy_init);
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 2/3] staging: iio_simple_dummy: fix return types
2015-05-30 8:20 [PATCH v3 0/3] staging: iio_simple_dummy: minor driver fixes Vladimirs Ambrosovs
2015-05-30 8:20 ` [PATCH v3 1/3] staging: iio_simple_dummy: fix init function Vladimirs Ambrosovs
@ 2015-05-30 8:20 ` Vladimirs Ambrosovs
2015-06-01 10:21 ` Jonathan Cameron
2015-05-30 8:20 ` [PATCH v3 3/3] staging: iio_simple_dummy: fix module_param type Vladimirs Ambrosovs
2 siblings, 1 reply; 7+ messages in thread
From: Vladimirs Ambrosovs @ 2015-05-30 8:20 UTC (permalink / raw)
To: sudipm.mukherjee, jic23, daniel.baluta, dan.carpenter, gregkh
Cc: cristina.opriceana, driverdev-devel, linux-iio,
Vladimirs Ambrosovs
The functions iio_dummy_remove(), iio_simple_dummy_events_unregister() and
iio_dummy_evgen_release_irq() were changed to return void instead of int.
Signed-off-by: Vladimirs Ambrosovs <rodriguez.twister@gmail.com>
---
drivers/staging/iio/iio_dummy_evgen.c | 4 +---
drivers/staging/iio/iio_dummy_evgen.h | 2 +-
drivers/staging/iio/iio_simple_dummy.c | 10 ++--------
drivers/staging/iio/iio_simple_dummy.h | 8 +++-----
drivers/staging/iio/iio_simple_dummy_events.c | 4 +---
5 files changed, 8 insertions(+), 20 deletions(-)
diff --git a/drivers/staging/iio/iio_dummy_evgen.c b/drivers/staging/iio/iio_dummy_evgen.c
index 0c9c86d..c54d5b5 100644
--- a/drivers/staging/iio/iio_dummy_evgen.c
+++ b/drivers/staging/iio/iio_dummy_evgen.c
@@ -128,13 +128,11 @@ EXPORT_SYMBOL_GPL(iio_dummy_evgen_get_irq);
*
* Used by client driver instances to give the irqs back when they disconnect
*/
-int iio_dummy_evgen_release_irq(int irq)
+void iio_dummy_evgen_release_irq(int irq)
{
mutex_lock(&iio_evgen->lock);
iio_evgen->inuse[irq - iio_evgen->base] = false;
mutex_unlock(&iio_evgen->lock);
-
- return 0;
}
EXPORT_SYMBOL_GPL(iio_dummy_evgen_release_irq);
diff --git a/drivers/staging/iio/iio_dummy_evgen.h b/drivers/staging/iio/iio_dummy_evgen.h
index 2ac293a..d044b94 100644
--- a/drivers/staging/iio/iio_dummy_evgen.h
+++ b/drivers/staging/iio/iio_dummy_evgen.h
@@ -8,6 +8,6 @@ struct iio_dummy_regs {
struct iio_dummy_regs *iio_dummy_evgen_get_regs(int irq);
int iio_dummy_evgen_get_irq(void);
-int iio_dummy_evgen_release_irq(int irq);
+void iio_dummy_evgen_release_irq(int irq);
#endif /* _IIO_DUMMY_EVGEN_H_ */
diff --git a/drivers/staging/iio/iio_simple_dummy.c b/drivers/staging/iio/iio_simple_dummy.c
index d0a9963..dc9482c7 100644
--- a/drivers/staging/iio/iio_simple_dummy.c
+++ b/drivers/staging/iio/iio_simple_dummy.c
@@ -665,9 +665,8 @@ error_ret:
*
* Parameters follow those of iio_dummy_probe for buses.
*/
-static int iio_dummy_remove(int index)
+static void iio_dummy_remove(int index)
{
- int ret;
/*
* Get a pointer to the device instance iio_dev structure
* from the bus subsystem. E.g.
@@ -685,15 +684,10 @@ static int iio_dummy_remove(int index)
/* Buffered capture related cleanup */
iio_simple_dummy_unconfigure_buffer(indio_dev);
- ret = iio_simple_dummy_events_unregister(indio_dev);
- if (ret)
- goto error_ret;
+ iio_simple_dummy_events_unregister(indio_dev);
/* Free all structures */
iio_device_free(indio_dev);
-
-error_ret:
- return ret;
}
/**
diff --git a/drivers/staging/iio/iio_simple_dummy.h b/drivers/staging/iio/iio_simple_dummy.h
index d86ccb7..e877a99 100644
--- a/drivers/staging/iio/iio_simple_dummy.h
+++ b/drivers/staging/iio/iio_simple_dummy.h
@@ -79,7 +79,7 @@ int iio_simple_dummy_write_event_value(struct iio_dev *indio_dev,
int val2);
int iio_simple_dummy_events_register(struct iio_dev *indio_dev);
-int iio_simple_dummy_events_unregister(struct iio_dev *indio_dev);
+void iio_simple_dummy_events_unregister(struct iio_dev *indio_dev);
#else /* Stubs for when events are disabled at compile time */
@@ -89,11 +89,9 @@ iio_simple_dummy_events_register(struct iio_dev *indio_dev)
return 0;
};
-static inline int
+static inline void
iio_simple_dummy_events_unregister(struct iio_dev *indio_dev)
-{
- return 0;
-};
+{ };
#endif /* CONFIG_IIO_SIMPLE_DUMMY_EVENTS*/
diff --git a/drivers/staging/iio/iio_simple_dummy_events.c b/drivers/staging/iio/iio_simple_dummy_events.c
index c32ef78..ecc563c 100644
--- a/drivers/staging/iio/iio_simple_dummy_events.c
+++ b/drivers/staging/iio/iio_simple_dummy_events.c
@@ -257,13 +257,11 @@ error_ret:
* iio_simple_dummy_events_unregister() - tidy up interrupt handling on remove
* @indio_dev: device instance data
*/
-int iio_simple_dummy_events_unregister(struct iio_dev *indio_dev)
+void iio_simple_dummy_events_unregister(struct iio_dev *indio_dev)
{
struct iio_dummy_state *st = iio_priv(indio_dev);
free_irq(st->event_irq, indio_dev);
/* Not part of normal driver */
iio_dummy_evgen_release_irq(st->event_irq);
-
- return 0;
}
--
2.4.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 2/3] staging: iio_simple_dummy: fix return types
2015-05-30 8:20 ` [PATCH v3 2/3] staging: iio_simple_dummy: fix return types Vladimirs Ambrosovs
@ 2015-06-01 10:21 ` Jonathan Cameron
0 siblings, 0 replies; 7+ messages in thread
From: Jonathan Cameron @ 2015-06-01 10:21 UTC (permalink / raw)
To: Vladimirs Ambrosovs, sudipm.mukherjee, daniel.baluta,
dan.carpenter, gregkh
Cc: cristina.opriceana, driverdev-devel, linux-iio
On 30/05/15 09:20, Vladimirs Ambrosovs wrote:
> The functions iio_dummy_remove(), iio_simple_dummy_events_unregister() and
> iio_dummy_evgen_release_irq() were changed to return void instead of int.
>
> Signed-off-by: Vladimirs Ambrosovs <rodriguez.twister@gmail.com>
applied as per previous patch.
> ---
> drivers/staging/iio/iio_dummy_evgen.c | 4 +---
> drivers/staging/iio/iio_dummy_evgen.h | 2 +-
> drivers/staging/iio/iio_simple_dummy.c | 10 ++--------
> drivers/staging/iio/iio_simple_dummy.h | 8 +++-----
> drivers/staging/iio/iio_simple_dummy_events.c | 4 +---
> 5 files changed, 8 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/staging/iio/iio_dummy_evgen.c b/drivers/staging/iio/iio_dummy_evgen.c
> index 0c9c86d..c54d5b5 100644
> --- a/drivers/staging/iio/iio_dummy_evgen.c
> +++ b/drivers/staging/iio/iio_dummy_evgen.c
> @@ -128,13 +128,11 @@ EXPORT_SYMBOL_GPL(iio_dummy_evgen_get_irq);
> *
> * Used by client driver instances to give the irqs back when they disconnect
> */
> -int iio_dummy_evgen_release_irq(int irq)
> +void iio_dummy_evgen_release_irq(int irq)
> {
> mutex_lock(&iio_evgen->lock);
> iio_evgen->inuse[irq - iio_evgen->base] = false;
> mutex_unlock(&iio_evgen->lock);
> -
> - return 0;
> }
> EXPORT_SYMBOL_GPL(iio_dummy_evgen_release_irq);
>
> diff --git a/drivers/staging/iio/iio_dummy_evgen.h b/drivers/staging/iio/iio_dummy_evgen.h
> index 2ac293a..d044b94 100644
> --- a/drivers/staging/iio/iio_dummy_evgen.h
> +++ b/drivers/staging/iio/iio_dummy_evgen.h
> @@ -8,6 +8,6 @@ struct iio_dummy_regs {
>
> struct iio_dummy_regs *iio_dummy_evgen_get_regs(int irq);
> int iio_dummy_evgen_get_irq(void);
> -int iio_dummy_evgen_release_irq(int irq);
> +void iio_dummy_evgen_release_irq(int irq);
>
> #endif /* _IIO_DUMMY_EVGEN_H_ */
> diff --git a/drivers/staging/iio/iio_simple_dummy.c b/drivers/staging/iio/iio_simple_dummy.c
> index d0a9963..dc9482c7 100644
> --- a/drivers/staging/iio/iio_simple_dummy.c
> +++ b/drivers/staging/iio/iio_simple_dummy.c
> @@ -665,9 +665,8 @@ error_ret:
> *
> * Parameters follow those of iio_dummy_probe for buses.
> */
> -static int iio_dummy_remove(int index)
> +static void iio_dummy_remove(int index)
> {
> - int ret;
> /*
> * Get a pointer to the device instance iio_dev structure
> * from the bus subsystem. E.g.
> @@ -685,15 +684,10 @@ static int iio_dummy_remove(int index)
> /* Buffered capture related cleanup */
> iio_simple_dummy_unconfigure_buffer(indio_dev);
>
> - ret = iio_simple_dummy_events_unregister(indio_dev);
> - if (ret)
> - goto error_ret;
> + iio_simple_dummy_events_unregister(indio_dev);
>
> /* Free all structures */
> iio_device_free(indio_dev);
> -
> -error_ret:
> - return ret;
> }
>
> /**
> diff --git a/drivers/staging/iio/iio_simple_dummy.h b/drivers/staging/iio/iio_simple_dummy.h
> index d86ccb7..e877a99 100644
> --- a/drivers/staging/iio/iio_simple_dummy.h
> +++ b/drivers/staging/iio/iio_simple_dummy.h
> @@ -79,7 +79,7 @@ int iio_simple_dummy_write_event_value(struct iio_dev *indio_dev,
> int val2);
>
> int iio_simple_dummy_events_register(struct iio_dev *indio_dev);
> -int iio_simple_dummy_events_unregister(struct iio_dev *indio_dev);
> +void iio_simple_dummy_events_unregister(struct iio_dev *indio_dev);
>
> #else /* Stubs for when events are disabled at compile time */
>
> @@ -89,11 +89,9 @@ iio_simple_dummy_events_register(struct iio_dev *indio_dev)
> return 0;
> };
>
> -static inline int
> +static inline void
> iio_simple_dummy_events_unregister(struct iio_dev *indio_dev)
> -{
> - return 0;
> -};
> +{ };
>
> #endif /* CONFIG_IIO_SIMPLE_DUMMY_EVENTS*/
>
> diff --git a/drivers/staging/iio/iio_simple_dummy_events.c b/drivers/staging/iio/iio_simple_dummy_events.c
> index c32ef78..ecc563c 100644
> --- a/drivers/staging/iio/iio_simple_dummy_events.c
> +++ b/drivers/staging/iio/iio_simple_dummy_events.c
> @@ -257,13 +257,11 @@ error_ret:
> * iio_simple_dummy_events_unregister() - tidy up interrupt handling on remove
> * @indio_dev: device instance data
> */
> -int iio_simple_dummy_events_unregister(struct iio_dev *indio_dev)
> +void iio_simple_dummy_events_unregister(struct iio_dev *indio_dev)
> {
> struct iio_dummy_state *st = iio_priv(indio_dev);
>
> free_irq(st->event_irq, indio_dev);
> /* Not part of normal driver */
> iio_dummy_evgen_release_irq(st->event_irq);
> -
> - return 0;
> }
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 3/3] staging: iio_simple_dummy: fix module_param type
2015-05-30 8:20 [PATCH v3 0/3] staging: iio_simple_dummy: minor driver fixes Vladimirs Ambrosovs
2015-05-30 8:20 ` [PATCH v3 1/3] staging: iio_simple_dummy: fix init function Vladimirs Ambrosovs
2015-05-30 8:20 ` [PATCH v3 2/3] staging: iio_simple_dummy: fix return types Vladimirs Ambrosovs
@ 2015-05-30 8:20 ` Vladimirs Ambrosovs
2015-06-01 10:23 ` Jonathan Cameron
2 siblings, 1 reply; 7+ messages in thread
From: Vladimirs Ambrosovs @ 2015-05-30 8:20 UTC (permalink / raw)
To: sudipm.mukherjee, jic23, daniel.baluta, dan.carpenter, gregkh
Cc: cristina.opriceana, driverdev-devel, linux-iio,
Vladimirs Ambrosovs
Fix the module_param "instances" type to uint, since the variable type
holding the value is unsigned.
Signed-off-by: Vladimirs Ambrosovs <rodriguez.twister@gmail.com>
---
drivers/staging/iio/iio_simple_dummy.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/iio/iio_simple_dummy.c b/drivers/staging/iio/iio_simple_dummy.c
index dc9482c7..1629a8a 100644
--- a/drivers/staging/iio/iio_simple_dummy.c
+++ b/drivers/staging/iio/iio_simple_dummy.c
@@ -30,7 +30,7 @@
* dummy devices are registered.
*/
static unsigned instances = 1;
-module_param(instances, int, 0);
+module_param(instances, uint, 0);
/* Pointer array used to fake bus elements */
static struct iio_dev **iio_dummy_devs;
--
2.4.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 3/3] staging: iio_simple_dummy: fix module_param type
2015-05-30 8:20 ` [PATCH v3 3/3] staging: iio_simple_dummy: fix module_param type Vladimirs Ambrosovs
@ 2015-06-01 10:23 ` Jonathan Cameron
0 siblings, 0 replies; 7+ messages in thread
From: Jonathan Cameron @ 2015-06-01 10:23 UTC (permalink / raw)
To: Vladimirs Ambrosovs, sudipm.mukherjee, daniel.baluta,
dan.carpenter, gregkh
Cc: cristina.opriceana, driverdev-devel, linux-iio
On 30/05/15 09:20, Vladimirs Ambrosovs wrote:
> Fix the module_param "instances" type to uint, since the variable type
> holding the value is unsigned.
>
> Signed-off-by: Vladimirs Ambrosovs <rodriguez.twister@gmail.com>
Applied to the togreg branch of iio.git - which will get pushed
out as testing in a few days. Or just possibly tonight if the hotel
network is working well and I can remember my password :)
Jonathan
> ---
> drivers/staging/iio/iio_simple_dummy.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/staging/iio/iio_simple_dummy.c b/drivers/staging/iio/iio_simple_dummy.c
> index dc9482c7..1629a8a 100644
> --- a/drivers/staging/iio/iio_simple_dummy.c
> +++ b/drivers/staging/iio/iio_simple_dummy.c
> @@ -30,7 +30,7 @@
> * dummy devices are registered.
> */
> static unsigned instances = 1;
> -module_param(instances, int, 0);
> +module_param(instances, uint, 0);
>
> /* Pointer array used to fake bus elements */
> static struct iio_dev **iio_dummy_devs;
>
^ permalink raw reply [flat|nested] 7+ messages in thread