All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chanwoo Choi <cw00.choi@samsung.com>
To: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>,
	Matti Vaittinen <mazziesaccount@gmail.com>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	MyungJoo Ham <myungjoo.ham@samsung.com>,
	Hans de Goede <hdegoede@redhat.com>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH RESEND v2 2/5] extcon: extcon-max14577: Fix potential work-queue cancellation race
Date: Thu, 10 Jun 2021 18:41:19 +0900	[thread overview]
Message-ID: <e9e46963-29ed-0358-1f2c-926c3a40686e@samsung.com> (raw)
In-Reply-To: <ee8545f59ae3a93f0a70f640ecbd7e31cfadbcb9.1623146580.git.matti.vaittinen@fi.rohmeurope.com>

On 6/8/21 7:09 PM, Matti Vaittinen wrote:
> The extcon IRQ schedules a work item. IRQ is requested using devm while
> WQ is cancelld at remove(). This mixing of devm and manual unwinding has
> potential case where the WQ has been emptied (.remove() was ran) but
> devm unwinding of IRQ was not yet done. It is possible the IRQ is triggered
> at this point scheduling new work item to the already flushed queue.
> 
> Use new devm_work_autocancel() to remove the remove() and to kill the bug.
> 
> Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
> ---
> 
> Please note that the change is compile-tested only. All proper testing is
> highly appreciated.
> ---
>  drivers/extcon/extcon-max14577.c | 16 +++++-----------
>  1 file changed, 5 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/extcon/extcon-max14577.c b/drivers/extcon/extcon-max14577.c
> index ace523924e58..5476f48ed74b 100644
> --- a/drivers/extcon/extcon-max14577.c
> +++ b/drivers/extcon/extcon-max14577.c
> @@ -6,6 +6,7 @@
>  // Chanwoo Choi <cw00.choi@samsung.com>
>  // Krzysztof Kozlowski <krzk@kernel.org>
>  
> +#include <linux/devm-helpers.h>
>  #include <linux/kernel.h>
>  #include <linux/module.h>
>  #include <linux/i2c.h>
> @@ -673,7 +674,10 @@ static int max14577_muic_probe(struct platform_device *pdev)
>  	platform_set_drvdata(pdev, info);
>  	mutex_init(&info->mutex);
>  
> -	INIT_WORK(&info->irq_work, max14577_muic_irq_work);
> +	ret = devm_work_autocancel(&pdev->dev, &info->irq_work,
> +				   max14577_muic_irq_work);
> +	if (ret)
> +		return ret;
>  
>  	switch (max14577->dev_type) {
>  	case MAXIM_DEVICE_TYPE_MAX77836:
> @@ -766,15 +770,6 @@ static int max14577_muic_probe(struct platform_device *pdev)
>  	return ret;
>  }
>  
> -static int max14577_muic_remove(struct platform_device *pdev)
> -{
> -	struct max14577_muic_info *info = platform_get_drvdata(pdev);
> -
> -	cancel_work_sync(&info->irq_work);
> -
> -	return 0;
> -}
> -
>  static const struct platform_device_id max14577_muic_id[] = {
>  	{ "max14577-muic", MAXIM_DEVICE_TYPE_MAX14577, },
>  	{ "max77836-muic", MAXIM_DEVICE_TYPE_MAX77836, },
> @@ -797,7 +792,6 @@ static struct platform_driver max14577_muic_driver = {
>  		.of_match_table = of_max14577_muic_dt_match,
>  	},
>  	.probe		= max14577_muic_probe,
> -	.remove		= max14577_muic_remove,
>  	.id_table	= max14577_muic_id,
>  };
>  
> 

Acked-by: Chanwoo Choi <cw00.choi@samsung.com>

-- 
Best Regards,
Chanwoo Choi
Samsung Electronics

  reply	other threads:[~2021-06-10  9:22 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-08 10:09 [PATCH RESEND v2 0/5] Add devm helper for work-queue initialization Matti Vaittinen
2021-06-08 10:09 ` [PATCH RESEND v2 1/5] devm-helpers: Add resource managed version of work init Matti Vaittinen
2021-06-08 10:09 ` [PATCH RESEND v2 2/5] extcon: extcon-max14577: Fix potential work-queue cancellation race Matti Vaittinen
2021-06-10  9:41   ` Chanwoo Choi [this message]
2021-06-08 10:10 ` [PATCH RESEND v2 3/5] extcon: extcon-max77693.c: " Matti Vaittinen
2021-06-10  9:43   ` Chanwoo Choi
2021-06-10  9:49     ` Hans de Goede
2021-06-11  9:04       ` Chanwoo Choi
2021-06-10  9:57     ` Matti Vaittinen
2021-06-10 22:14       ` Dmitry Torokhov
2021-06-11  7:16       ` Chanwoo Choi
2021-06-08 10:10 ` [PATCH RESEND v2 4/5] extcon: extcon-max8997: Fix IRQ freeing at error path Matti Vaittinen
2021-06-10  9:53   ` Chanwoo Choi
2021-06-08 10:10 ` [PATCH RESEND v2 5/5] extcon: extcon-max8997: Simplify driver using devm Matti Vaittinen
2021-06-10  9:57   ` Chanwoo Choi
2021-06-09 15:23 ` [PATCH RESEND v2 0/5] Add devm helper for work-queue initialization Hans de Goede
2021-06-10  1:02   ` Chanwoo Choi
2021-06-10  8:22     ` Vaittinen, Matti

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e9e46963-29ed-0358-1f2c-926c3a40686e@samsung.com \
    --to=cw00.choi@samsung.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=hdegoede@redhat.com \
    --cc=krzysztof.kozlowski@canonical.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=matti.vaittinen@fi.rohmeurope.com \
    --cc=mazziesaccount@gmail.com \
    --cc=myungjoo.ham@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.