linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RESEND PATCH 1/2] iio:core: Introduce unlocked version of iio_map_array_unregister()
@ 2020-11-28 13:44 Lino Sanfilippo
  2020-11-28 13:44 ` [RESEND PATCH 2/2] io:core: In iio_map_array_register() cleanup in case of error Lino Sanfilippo
  2020-11-28 13:54 ` [RESEND PATCH 1/2] iio:core: Introduce unlocked version of iio_map_array_unregister() Jonathan Cameron
  0 siblings, 2 replies; 5+ messages in thread
From: Lino Sanfilippo @ 2020-11-28 13:44 UTC (permalink / raw)
  To: jic23
  Cc: andy.shevchenko, lars, pmeerw, linux-iio, linux-kernel, Lino Sanfilippo

Introduce an unlocked version of iio_map_array_unregister(). This function
can help to unwind in case of error while the iio_map_list_lock mutex is
held.

Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 drivers/iio/inkern.c | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c
index ede99e0..39c1d63 100644
--- a/drivers/iio/inkern.c
+++ b/drivers/iio/inkern.c
@@ -24,6 +24,21 @@ struct iio_map_internal {
 static LIST_HEAD(iio_map_list);
 static DEFINE_MUTEX(iio_map_list_lock);
 
+static int iio_map_array_unregister_locked(struct iio_dev *indio_dev)
+{
+	int ret = -ENODEV;
+	struct iio_map_internal *mapi, *next;
+
+	list_for_each_entry_safe(mapi, next, &iio_map_list, l) {
+		if (indio_dev == mapi->indio_dev) {
+			list_del(&mapi->l);
+			kfree(mapi);
+			ret = 0;
+		}
+	}
+	return ret;
+}
+
 int iio_map_array_register(struct iio_dev *indio_dev, struct iio_map *maps)
 {
 	int i = 0, ret = 0;
@@ -57,18 +72,12 @@ EXPORT_SYMBOL_GPL(iio_map_array_register);
  */
 int iio_map_array_unregister(struct iio_dev *indio_dev)
 {
-	int ret = -ENODEV;
-	struct iio_map_internal *mapi, *next;
+	int ret;
 
 	mutex_lock(&iio_map_list_lock);
-	list_for_each_entry_safe(mapi, next, &iio_map_list, l) {
-		if (indio_dev == mapi->indio_dev) {
-			list_del(&mapi->l);
-			kfree(mapi);
-			ret = 0;
-		}
-	}
+	ret = iio_map_array_unregister_locked(indio_dev);
 	mutex_unlock(&iio_map_list_lock);
+
 	return ret;
 }
 EXPORT_SYMBOL_GPL(iio_map_array_unregister);
-- 
2.7.4


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

* [RESEND PATCH 2/2] io:core: In iio_map_array_register() cleanup in case of error
  2020-11-28 13:44 [RESEND PATCH 1/2] iio:core: Introduce unlocked version of iio_map_array_unregister() Lino Sanfilippo
@ 2020-11-28 13:44 ` Lino Sanfilippo
  2020-11-28 13:54 ` [RESEND PATCH 1/2] iio:core: Introduce unlocked version of iio_map_array_unregister() Jonathan Cameron
  1 sibling, 0 replies; 5+ messages in thread
From: Lino Sanfilippo @ 2020-11-28 13:44 UTC (permalink / raw)
  To: jic23
  Cc: andy.shevchenko, lars, pmeerw, linux-iio, linux-kernel, Lino Sanfilippo

In function iio_map_array_register() properly rewind in case of error.

Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
---
 drivers/iio/inkern.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c
index 39c1d63..fe30bcb 100644
--- a/drivers/iio/inkern.c
+++ b/drivers/iio/inkern.c
@@ -60,6 +60,8 @@ int iio_map_array_register(struct iio_dev *indio_dev, struct iio_map *maps)
 		i++;
 	}
 error_ret:
+	if (ret)
+		iio_map_array_unregister_locked(indio_dev);
 	mutex_unlock(&iio_map_list_lock);
 
 	return ret;
-- 
2.7.4


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

* Re: [RESEND PATCH 1/2] iio:core: Introduce unlocked version of iio_map_array_unregister()
  2020-11-28 13:44 [RESEND PATCH 1/2] iio:core: Introduce unlocked version of iio_map_array_unregister() Lino Sanfilippo
  2020-11-28 13:44 ` [RESEND PATCH 2/2] io:core: In iio_map_array_register() cleanup in case of error Lino Sanfilippo
@ 2020-11-28 13:54 ` Jonathan Cameron
  2020-11-28 14:22   ` Lino Sanfilippo
  1 sibling, 1 reply; 5+ messages in thread
From: Jonathan Cameron @ 2020-11-28 13:54 UTC (permalink / raw)
  To: Lino Sanfilippo; +Cc: andy.shevchenko, lars, pmeerw, linux-iio, linux-kernel

On Sat, 28 Nov 2020 14:44:18 +0100
Lino Sanfilippo <LinoSanfilippo@gmx.de> wrote:

> Introduce an unlocked version of iio_map_array_unregister(). This function
> can help to unwind in case of error while the iio_map_list_lock mutex is
> held.
> 
> Signed-off-by: Lino Sanfilippo <LinoSanfilippo@gmx.de>
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Hi.

The mailing list is having issues today and as I use b4 to pull patches
from lore.kernel.org I can't easily pick this up.

I had as you've probably guessed forgotten about this one.
A few notes to make it harder for people to do that in future.
1. Don't send patch series (or new versions of older patches) in reply
   to an existing thread.   They get lost and difficult to pull out.
   b4 can't automatically figure out which patches to pull from that
   original thread for example.
2. Always version number whole series with same number, even if some patches
   are new.   So this should be v3.

Anyhow, I'll pick up this resend once the mailing list recovers or I get
annoyed enough to do it the old fashioned manual way.

Thanks,

Jonathan

> ---
>  drivers/iio/inkern.c | 27 ++++++++++++++++++---------
>  1 file changed, 18 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c
> index ede99e0..39c1d63 100644
> --- a/drivers/iio/inkern.c
> +++ b/drivers/iio/inkern.c
> @@ -24,6 +24,21 @@ struct iio_map_internal {
>  static LIST_HEAD(iio_map_list);
>  static DEFINE_MUTEX(iio_map_list_lock);
>  
> +static int iio_map_array_unregister_locked(struct iio_dev *indio_dev)
> +{
> +	int ret = -ENODEV;
> +	struct iio_map_internal *mapi, *next;
> +
> +	list_for_each_entry_safe(mapi, next, &iio_map_list, l) {
> +		if (indio_dev == mapi->indio_dev) {
> +			list_del(&mapi->l);
> +			kfree(mapi);
> +			ret = 0;
> +		}
> +	}
> +	return ret;
> +}
> +
>  int iio_map_array_register(struct iio_dev *indio_dev, struct iio_map *maps)
>  {
>  	int i = 0, ret = 0;
> @@ -57,18 +72,12 @@ EXPORT_SYMBOL_GPL(iio_map_array_register);
>   */
>  int iio_map_array_unregister(struct iio_dev *indio_dev)
>  {
> -	int ret = -ENODEV;
> -	struct iio_map_internal *mapi, *next;
> +	int ret;
>  
>  	mutex_lock(&iio_map_list_lock);
> -	list_for_each_entry_safe(mapi, next, &iio_map_list, l) {
> -		if (indio_dev == mapi->indio_dev) {
> -			list_del(&mapi->l);
> -			kfree(mapi);
> -			ret = 0;
> -		}
> -	}
> +	ret = iio_map_array_unregister_locked(indio_dev);
>  	mutex_unlock(&iio_map_list_lock);
> +
>  	return ret;
>  }
>  EXPORT_SYMBOL_GPL(iio_map_array_unregister);


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

* Re: [RESEND PATCH 1/2] iio:core: Introduce unlocked version of iio_map_array_unregister()
  2020-11-28 13:54 ` [RESEND PATCH 1/2] iio:core: Introduce unlocked version of iio_map_array_unregister() Jonathan Cameron
@ 2020-11-28 14:22   ` Lino Sanfilippo
  2020-11-29 13:08     ` Jonathan Cameron
  0 siblings, 1 reply; 5+ messages in thread
From: Lino Sanfilippo @ 2020-11-28 14:22 UTC (permalink / raw)
  To: Jonathan Cameron; +Cc: andy.shevchenko, lars, pmeerw, linux-iio, linux-kernel

Hi Jonathan,

On 28.11.20 at 14:54, Jonathan Cameron wrote:

> A few notes to make it harder for people to do that in future.
> 1. Don't send patch series (or new versions of older patches) in reply
>    to an existing thread.   They get lost and difficult to pull out.
>    b4 can't automatically figure out which patches to pull from that
>    original thread for example.
> 2. Always version number whole series with same number, even if some patches
>    are new.   So this should be v3.
>

Thanks for these hints, I will keep it in mind for future patch submissions.

Regards,
Lino


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

* Re: [RESEND PATCH 1/2] iio:core: Introduce unlocked version of iio_map_array_unregister()
  2020-11-28 14:22   ` Lino Sanfilippo
@ 2020-11-29 13:08     ` Jonathan Cameron
  0 siblings, 0 replies; 5+ messages in thread
From: Jonathan Cameron @ 2020-11-29 13:08 UTC (permalink / raw)
  To: Lino Sanfilippo; +Cc: andy.shevchenko, lars, pmeerw, linux-iio, linux-kernel

On Sat, 28 Nov 2020 15:22:16 +0100
Lino Sanfilippo <LinoSanfilippo@gmx.de> wrote:

> Hi Jonathan,
> 
> On 28.11.20 at 14:54, Jonathan Cameron wrote:
> 
> > A few notes to make it harder for people to do that in future.
> > 1. Don't send patch series (or new versions of older patches) in reply
> >    to an existing thread.   They get lost and difficult to pull out.
> >    b4 can't automatically figure out which patches to pull from that
> >    original thread for example.
> > 2. Always version number whole series with same number, even if some patches
> >    are new.   So this should be v3.
> >  
> 
> Thanks for these hints, I will keep it in mind for future patch submissions.

Mailing list seems to have recovered so I can use b4 again :)

Applied to the togreg branch of iio.git and pushed out as testing so the
autobuilders can try to find anything we missed.

Thanks,

Jonathan

> 
> Regards,
> Lino
> 


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

end of thread, other threads:[~2020-11-29 13:09 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-28 13:44 [RESEND PATCH 1/2] iio:core: Introduce unlocked version of iio_map_array_unregister() Lino Sanfilippo
2020-11-28 13:44 ` [RESEND PATCH 2/2] io:core: In iio_map_array_register() cleanup in case of error Lino Sanfilippo
2020-11-28 13:54 ` [RESEND PATCH 1/2] iio:core: Introduce unlocked version of iio_map_array_unregister() Jonathan Cameron
2020-11-28 14:22   ` Lino Sanfilippo
2020-11-29 13:08     ` 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).