Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp1998360imu; Fri, 14 Dec 2018 04:16:24 -0800 (PST) X-Google-Smtp-Source: AFSGD/XuHYEr3b/lMocXNutMZ6kydDEhtg6OLifvmN9uCC8jlCxhFqnOKc/iYEuBYCFRjLuU6r9L X-Received: by 2002:a17:902:1126:: with SMTP id d35mr2481782pla.1.1544789784668; Fri, 14 Dec 2018 04:16:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544789784; cv=none; d=google.com; s=arc-20160816; b=qNBLrs4OqoveTPfdyqoA3GfU2st5hwtjMzxBbacoLvw8NkMMXdTpYf6o9c/MpSEXFL 2+PfjZXDkAE+OiBZdubBDT+msaRPK/z4sOnOx78oLneQkumKIkRnLZre4AmToqpGw0Ep uPopS+KZUtl4dw08eHJIaiTteANmu00hgD5GMlq4fyIwDw+XqykhOcG7nCjy/SLQiN05 4Suqy3spfmA3M1pAiTsR8KHoII82WN2xhVDkwSjcCmr7uKstk5LCC8ZuwJt2/LpcfvTH 2151XNEbURt1cU5IAgYbVyjUB0bmnbbod5v4faAZ2iajVnbnC1MdloY75NVELip+wcsK SJcA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=7Q+H+5eUdL3P62hAFnpIRk/fNf5gfPu3RhSYEjXo+JM=; b=IHBWBF3eidKeWYQLSqFigHVGpotQK0ByZxpsuougosCWIp8v9b2PAv1XaEgss3Krmv fxyv27C63ujfGoLOg63x/EffUSGz698zHhs5ncF/AEJyiuswiqNmYP8tKetY40PkTqsi CX3TCatgfYVDncEuWUZjJsWjf+mWxvc8HJ6IBtI1JIsumbHTJI0nTnMbPy0I36bkRBwj wCMMcSB56iburxb8eN8XughHhvowPEONy45P08s8gOJihkVBwVK2CwJYImQaNQ/Lhsd1 W4zhTO1f0FU3tLcPId640mppPlia37ubAUBMkjrPAUIQ0yYrvEx3y1eqEqilpDJdoc38 Yg5A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Qracclw+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j14si4085239pgi.354.2018.12.14.04.16.09; Fri, 14 Dec 2018 04:16:24 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Qracclw+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731908AbeLNMOJ (ORCPT + 99 others); Fri, 14 Dec 2018 07:14:09 -0500 Received: from mail.kernel.org ([198.145.29.99]:33658 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730579AbeLNMOH (ORCPT ); Fri, 14 Dec 2018 07:14:07 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 8D213214F1; Fri, 14 Dec 2018 12:14:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1544789646; bh=WoRxcNLYpd4Uw8htAFhMVXgsMYfr1ONTOn6jCW5Yx0g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Qracclw+hB5QNB1GQaJ1w/wfFi8paimpAVPNV87SUOD94AKx9LbZyOLfHzIgYFL9X OvWIhc7FXVUlX/fHRuW+R28Cv+TicN5bHOJzrWbWk3UlF1N3BFSUu2sVcQ1DNiBbVp TOAQfI2pVeisr4VhtS6o7uV/JhnC3HSDCKpCs7X0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Aaro Koskinen , Felipe Balbi , Sasha Levin Subject: [PATCH 4.4 22/88] USB: omap_udc: use devm_request_irq() Date: Fri, 14 Dec 2018 12:59:56 +0100 Message-Id: <20181214115703.977504001@linuxfoundation.org> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20181214115702.151309521@linuxfoundation.org> References: <20181214115702.151309521@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 286afdde1640d8ea8916a0f05e811441fbbf4b9d ] The current code fails to release the third irq on the error path (observed by reading the code), and we get also multiple WARNs with failing gadget drivers due to duplicate IRQ releases. Fix by using devm_request_irq(). Signed-off-by: Aaro Koskinen Signed-off-by: Felipe Balbi Signed-off-by: Sasha Levin --- drivers/usb/gadget/udc/omap_udc.c | 37 +++++++++---------------------- 1 file changed, 10 insertions(+), 27 deletions(-) diff --git a/drivers/usb/gadget/udc/omap_udc.c b/drivers/usb/gadget/udc/omap_udc.c index 9b7d39484ed3..b25eac2dcaf8 100644 --- a/drivers/usb/gadget/udc/omap_udc.c +++ b/drivers/usb/gadget/udc/omap_udc.c @@ -2886,8 +2886,8 @@ static int omap_udc_probe(struct platform_device *pdev) udc->clr_halt = UDC_RESET_EP; /* USB general purpose IRQ: ep0, state changes, dma, etc */ - status = request_irq(pdev->resource[1].start, omap_udc_irq, - 0, driver_name, udc); + status = devm_request_irq(&pdev->dev, pdev->resource[1].start, + omap_udc_irq, 0, driver_name, udc); if (status != 0) { ERR("can't get irq %d, err %d\n", (int) pdev->resource[1].start, status); @@ -2895,20 +2895,20 @@ static int omap_udc_probe(struct platform_device *pdev) } /* USB "non-iso" IRQ (PIO for all but ep0) */ - status = request_irq(pdev->resource[2].start, omap_udc_pio_irq, - 0, "omap_udc pio", udc); + status = devm_request_irq(&pdev->dev, pdev->resource[2].start, + omap_udc_pio_irq, 0, "omap_udc pio", udc); if (status != 0) { ERR("can't get irq %d, err %d\n", (int) pdev->resource[2].start, status); - goto cleanup2; + goto cleanup1; } #ifdef USE_ISO - status = request_irq(pdev->resource[3].start, omap_udc_iso_irq, - 0, "omap_udc iso", udc); + status = devm_request_irq(&pdev->dev, pdev->resource[3].start, + omap_udc_iso_irq, 0, "omap_udc iso", udc); if (status != 0) { ERR("can't get irq %d, err %d\n", (int) pdev->resource[3].start, status); - goto cleanup3; + goto cleanup1; } #endif if (cpu_is_omap16xx() || cpu_is_omap7xx()) { @@ -2921,22 +2921,11 @@ static int omap_udc_probe(struct platform_device *pdev) create_proc_file(); status = usb_add_gadget_udc_release(&pdev->dev, &udc->gadget, omap_udc_release); - if (status) - goto cleanup4; - - return 0; + if (!status) + return 0; -cleanup4: remove_proc_file(); -#ifdef USE_ISO -cleanup3: - free_irq(pdev->resource[2].start, udc); -#endif - -cleanup2: - free_irq(pdev->resource[1].start, udc); - cleanup1: kfree(udc); udc = NULL; @@ -2980,12 +2969,6 @@ static int omap_udc_remove(struct platform_device *pdev) remove_proc_file(); -#ifdef USE_ISO - free_irq(pdev->resource[3].start, udc); -#endif - free_irq(pdev->resource[2].start, udc); - free_irq(pdev->resource[1].start, udc); - if (udc->dc_clk) { if (udc->clk_requested) omap_udc_enable_clock(0); -- 2.19.1