Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp1404429rwi; Wed, 19 Oct 2022 10:08:57 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4UUAQenV3fiesB2wV6ZDZPl3LkUqVAgRMy8KRnAPOmX0nMjGGfZbRN5XF7iPsyKL7isKHl X-Received: by 2002:aa7:8686:0:b0:565:8597:40e with SMTP id d6-20020aa78686000000b005658597040emr9416574pfo.35.1666199336809; Wed, 19 Oct 2022 10:08:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666199336; cv=none; d=google.com; s=arc-20160816; b=k2PtKbmM4cBAXyTNR4SljPrV2GEFi+1shFXmCjXQ7uxyehphr957OQ/4mhIHOXt6na +hTuHNxu1UR3g2b3OrCUGLbUG3dYRhRv9NzcnxV2XFkqExVfZp3rfCxNoONVW2n9y884 1X1XMeYx0U1t8c0B4wa/IYkG/A1HkE4DK4e+bd8SJLj785XoKC/IRi5mZCZKYl8rBq9Z +5dngrA1T0TTZG4maYwCIWHi4HeB7SkI0Ej2HiE7QssUEFaSe9j8NVTvlfX4S3n1zjc5 QpOOF5BAcmGqVbp1AXPndsHuv9Ous4ulTd431MMdO3PpgH3i+zrWkgJYX0mJZkQalDTo 1mYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=84c9jCOQObeX4WfOhOdOWLhClwl9qdYld2jLFF/6wNw=; b=tU1/n+HQeANeXwgnKD3A2ROkU/XtvGcJXvzsvxEbgZB4li37ru8IVzrytUiEh3WsBd GeNssHrD3b3uYjb+E+OgdLhzFHi5n3ZXYDmvf/WcdfJK/vSsjsGIww/gG9NdS5A/50lQ SloQdftdHOyqde+EOgrclefOOXbDvC6Lp921ECkgzBjjaTz9OXRmb++UjYQTGMGQIrMw ULk5QuHh9XeRJFAiU0g3OdMlNIQ2cE1FZx5n/iFlVIleZhPHrwOwNsoa89FZ22XamSYc wMfTZIP528tf/hSzyyx8knhF+gvruGPX4oYXQgWMmm4UDfHMgdQ5ePfSdWxRBNod7QIw aWPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=WkD7Ruvn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id rm4-20020a17090b3ec400b002008948605esi493871pjb.13.2022.10.19.10.08.43; Wed, 19 Oct 2022 10:08:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=WkD7Ruvn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229922AbiJSQtM (ORCPT + 99 others); Wed, 19 Oct 2022 12:49:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43140 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229921AbiJSQtK (ORCPT ); Wed, 19 Oct 2022 12:49:10 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4E71A1C73C1; Wed, 19 Oct 2022 09:49:09 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 0060EB824C7; Wed, 19 Oct 2022 16:49:08 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A7471C433C1; Wed, 19 Oct 2022 16:49:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1666198146; bh=1zhD6GeKgSstHb00mJlu4MbO8vG9BfJlQz73YmXarik=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=WkD7RuvnEHkDnggb2aOBdyTek0f5t9C2/0BuWk1RFdCPVSC+dgYRQQAoGiTF1neCz hVwbdbkfjWZ6FvyHdXZAKqqE1bcTDt12S/d9lZpKlgZuN8XPrxKTPk6GVViqCNqJBW fMvcU5uFvJBKBckLMu31qvjD03HIqkMIqfP32iJ8KPEqjceWnh8+MUwk8HEsON3RcU lq1BDj8icWJTDSOgInBNkdORrTEYnMl2FMj93xb/H0rTc12U7zEhUOVzwMkqNZXLtq 52tdLgCGZmfXSCMvKFUUoJ2+Ba6pWOrL0hpmcWW6a+NI4lOQunHcpW22mmTs4efnsB U2Yv5kJBXgARw== Date: Wed, 19 Oct 2022 22:19:02 +0530 From: Vinod Koul To: Tudor Ambarus Cc: peda@axentia.se, du@axentia.se, regressions@leemhuis.info, ludovic.desroches@microchip.com, maciej.sosnowski@intel.com, dan.j.williams@intel.com, nicolas.ferre@microchip.com, mripard@kernel.org, torfl6749@gmail.com, linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 28/33] dmaengine: at_hdmac: Use devm_request_irq() Message-ID: References: <20220820125717.588722-1-tudor.ambarus@microchip.com> <20220820125717.588722-29-tudor.ambarus@microchip.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220820125717.588722-29-tudor.ambarus@microchip.com> X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 20-08-22, 15:57, Tudor Ambarus wrote: > IRQs requested with this function will be automatically freed on driver > detach. Use devm_request_irq() and make the code cleaner. That is not really good idea! > > Signed-off-by: Tudor Ambarus > --- > drivers/dma/at_hdmac.c | 11 ++++------- > 1 file changed, 4 insertions(+), 7 deletions(-) > > diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c > index 9c414f167b62..96b885f83374 100644 > --- a/drivers/dma/at_hdmac.c > +++ b/drivers/dma/at_hdmac.c > @@ -2241,6 +2241,10 @@ static int __init at_dma_probe(struct platform_device *pdev) > irq = platform_get_irq(pdev, 0); > if (irq < 0) > return irq; > + err = devm_request_irq(&pdev->dev, irq, at_dma_interrupt, 0, > + dev_name(&pdev->dev), atdma); > + if (err) > + return err; > > /* discover transaction capabilities */ > atdma->dma_device.cap_mask = plat_dat->cap_mask; > @@ -2257,10 +2261,6 @@ static int __init at_dma_probe(struct platform_device *pdev) > /* force dma off, just in case */ > at_dma_off(atdma); > > - err = request_irq(irq, at_dma_interrupt, 0, "at_hdmac", atdma); > - if (err) > - goto err_irq; here you are ready to receive the irq, but now you moved it early on.. it may cause issues.. > - > platform_set_drvdata(pdev, atdma); > > /* create a pool of consistent memory blocks for hardware descriptors */ > @@ -2377,8 +2377,6 @@ static int __init at_dma_probe(struct platform_device *pdev) > err_memset_pool_create: > dma_pool_destroy(atdma->dma_desc_pool); > err_desc_pool_create: > - free_irq(platform_get_irq(pdev, 0), atdma); > -err_irq: > clk_disable_unprepare(atdma->clk); > err_clk_prepare: > clk_put(atdma->clk); > @@ -2397,7 +2395,6 @@ static int at_dma_remove(struct platform_device *pdev) > > dma_pool_destroy(atdma->memset_pool); > dma_pool_destroy(atdma->dma_desc_pool); > - free_irq(platform_get_irq(pdev, 0), atdma); Now we have an active irq while we are unrolling device, which can be fired and cause tasklet to also get scheduled... You need to make sure now irq cant fire here and tasklet is killed.. > > list_for_each_entry_safe(chan, _chan, &atdma->dma_device.channels, > device_node) { > -- > 2.25.1 -- ~Vinod