linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/3] staging: iio_simple_dummy: minor driver fixes
@ 2015-05-30  8:20 Vladimirs Ambrosovs
  2015-05-30  8:20 ` [PATCH v3 1/3] staging: iio_simple_dummy: fix init function Vladimirs Ambrosovs
                   ` (2 more replies)
  0 siblings, 3 replies; 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

v3 Fixed the function prototypes in header file, and the dummy inline
function return type, which cause the build break when 
CONFIG_IIO_SIMPLE_DUMMY_EVENTS and CONFIG_IIO_SIMPLE_DUMMY_BUFFER
are enabled.

v2 Fixed the code as per the comments from version 1:
	* Removed unnecessary comments
	* Fixed the label name to address label location
	* Changed the type of functions, which always return 0 to void

Vladimirs Ambrosovs (3):
  staging: iio_simple_dummy: fix init function
  staging: iio_simple_dummy: fix return types
  staging: iio_simple_dummy: fix module_param type

 drivers/staging/iio/iio_dummy_evgen.c         |  4 +---
 drivers/staging/iio/iio_simple_dummy.c        | 21 +++++++++++----------
 drivers/staging/iio/iio_simple_dummy_events.c |  4 +---
 3 files changed, 13 insertions(+), 16 deletions(-)

-- 
2.4.1

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [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

* [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

* [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 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

* 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

* 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

end of thread, other threads:[~2015-06-01 21:17 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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-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-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
2015-06-01 10:23   ` Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).