Re: [PATCH 29/32] dmaengine: qcom_hidma: kill the tasklets upon exit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2016-07-08 06:44, Vinod Koul wrote:
On Wed, Jul 06, 2016 at 10:25:35PM +0300, okaya@xxxxxxxxxxxxxx wrote:
On 2016-07-06 19:35, Vinod Koul wrote:
>On Wed, Jul 06, 2016 at 09:47:50AM +0300, okaya@xxxxxxxxxxxxxx wrote:
>>On 2016-07-05 17:54, Vinod Koul wrote:
>>>drivers should ensure that tasklets are killed, so that they can't be
>>>run after driver remove is executed
>>>
>>>Signed-off-by: Vinod Koul <vinod.koul@xxxxxxxxx>
>>>Cc: Sinan Kaya <okaya@xxxxxxxxxxxxxx>
>>>---
>>> drivers/dma/qcom/hidma.c | 1 +
>>> 1 file changed, 1 insertion(+)
>>>
>>>diff --git a/drivers/dma/qcom/hidma.c b/drivers/dma/qcom/hidma.c
>>>index 41b5c6dee713..b2374cd91e45 100644
>>>--- a/drivers/dma/qcom/hidma.c
>>>+++ b/drivers/dma/qcom/hidma.c
>>>@@ -708,6 +708,7 @@ static int hidma_remove(struct platform_device
>>>*pdev)
>>> 	pm_runtime_get_sync(dmadev->ddev.dev);
>>> 	dma_async_device_unregister(&dmadev->ddev);
>>> 	devm_free_irq(dmadev->ddev.dev, dmadev->irq, dmadev->lldev);
>>>+	tasklet_kill(&dmadev->task);
>>> 	hidma_debug_uninit(dmadev);
>>> 	hidma_ll_uninit(dmadev->lldev);
>>> 	hidma_free(dmadev);
>>
>>Acked-by: Sinan Kaya <okaya@xxxxxxxxxxxxxx>
>>
>>Thanks for taking care of this. We also need one more tasklet_kill
>>for rst_task in hidma_ll.c
>
>Looks like it it two?
>
>Am adding this one:
>
>diff --git a/drivers/dma/qcom/hidma_ll.c b/drivers/dma/qcom/hidma_ll.c
>index f3929001539b..e8323c8e23d5 100644
>--- a/drivers/dma/qcom/hidma_ll.c
>+++ b/drivers/dma/qcom/hidma_ll.c
>@@ -831,6 +831,8 @@ int hidma_ll_uninit(struct hidma_lldev *lldev)
>
>        required_bytes = sizeof(struct hidma_tre) * lldev->nr_tres;
>        tasklet_kill(&lldev->task);
>+       tasklet_kill(&lldev->rst_task);

This is good

>+       tasklet_kill(&lldev->task);

This is redundant. Exists above.

Are you sure, looking at the code, we seem to initialize three tasklets, one in hidma and two in ll part. Both are different pointer allocated by these
routines?


Sorry, I am on vacation and have been checking emails from webmail.

You are right, there needs to be one tasklet_kill in hidma.c and two tasklet_kill in hidma_ll.c in total.

AFAIS, your patch is adding one more

tasklet_kill(&lldev->task);

In hidma_ll.c. this already exists in hidma_ll.c

It could be my poor webmail interface.

--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux PCI]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux