Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2025205imu; Fri, 14 Dec 2018 04:42:07 -0800 (PST) X-Google-Smtp-Source: AFSGD/UzAHUxefn0iY68U2IT0/Ua9Rw2I3GfTrzlqfoq6sJPAsOxtWXw6R0T8dppg+ljtZY1XK0G X-Received: by 2002:a65:4142:: with SMTP id x2mr2527883pgp.356.1544791327904; Fri, 14 Dec 2018 04:42:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544791327; cv=none; d=google.com; s=arc-20160816; b=zKdJ0T3FCM27uYyXLNn2C5iM53Lz9G5ApR1EiVrm9mkzg7GcStnmH5m5Ud/bbENA4q zS+1110RVfGm7fSCceE5ViIDqGPoTB9/JXtb0JPqO+V8lW4FE2/MSt5l/+OUquR9NOY/ NPv2XM3g6TW5QSxuo2i0w+NKsLrOKrRQNrRNYAh8yoXUzqAKzPWwVDKPWiZ3lnzMDBO+ sT7IuiSUHZdo+VtuYSGvhz/bPuDwRJDgiNIuYGt4GcON2XRTZnteZredMStvB5bqu9xK ff60ifSRTt9XlvmiQ9EwxsV9eF24/ccVqcAJcRV9keI26hFsJ1hsNoYpdU7N18zX4OEM EeSQ== 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=HPA9/oIY5FZa2QanVKoDa+95R3gy/4ZU0SzdKmNfQ+A=; b=u1Sbb+ABqH48xtvcevmEaphRJWoW9vqopcehP39Oh//t24LAGncp0dR1ZNgsyih3wD 0torqyPD7W6SUM4duCuFEeEAsaAFN3/116YS4vXEJMdqOZbXWONei2CW8XHwHrLYPLGv /heboZcyoaxlKme6RF2n8ToR2pkAShwps+FSSt3IJ50cGlmg50cSrSmbilzYQhC7ZOwW Hy2QKmhCog+aZAEuL0Ge5/5TmskHL0c+3yU0VUC5PNs3lZlO19QQ5U/Mvh4gOR5XfbXf KD5eHOpLhYkKCUjMy0lYQNgOC27BHkl8KL0ZEPKBF+1KZpPbKGoM8oiDSY2pa84kHN9q ROxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=tzmTUkiV; 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 u4si3975830pga.91.2018.12.14.04.41.53; Fri, 14 Dec 2018 04:42:07 -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=tzmTUkiV; 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 S1730558AbeLNMjx (ORCPT + 99 others); Fri, 14 Dec 2018 07:39:53 -0500 Received: from mail.kernel.org ([198.145.29.99]:49330 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729925AbeLNMEg (ORCPT ); Fri, 14 Dec 2018 07:04:36 -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 E6B29214C1; Fri, 14 Dec 2018 12:04:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1544789075; bh=LwP+HwqOlPtRhKovui74kDuDX5Ne3qFCW0Z7Dp5j1sU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tzmTUkiVfaBvu2tfngI3Ssh/ESOb1F3+qg5pqaUFGgAZ5hcGDYS2Q5WHjE4k4OIm9 LuGsSUdiZq+zIIOZB2ZHC1lpxzJTDUslo7EPMEVylJjdZUKRwmAwr6djKxA/lFwHtD GUE+DgX5AQkjVMptA80JkFQLQ71OTTKTiBUZAsb0= 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.19 085/142] USB: omap_udc: use devm_request_irq() Date: Fri, 14 Dec 2018 12:59:30 +0100 Message-Id: <20181214115750.459140613@linuxfoundation.org> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20181214115747.053633987@linuxfoundation.org> References: <20181214115747.053633987@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.19-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 3a16431da321..1c77218c82af 100644 --- a/drivers/usb/gadget/udc/omap_udc.c +++ b/drivers/usb/gadget/udc/omap_udc.c @@ -2867,8 +2867,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); @@ -2876,20 +2876,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()) { @@ -2902,22 +2902,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; @@ -2961,12 +2950,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