Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2009615imu; Fri, 14 Dec 2018 04:27:12 -0800 (PST) X-Google-Smtp-Source: AFSGD/Uo1bdzfNJ2kxdkVdKxN1+UINPKrnDdmBpjULWQqR6wv4sK9UlqYiInWmOXyC9yTgjKWYZo X-Received: by 2002:a63:5722:: with SMTP id l34mr2571529pgb.118.1544790432331; Fri, 14 Dec 2018 04:27:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544790432; cv=none; d=google.com; s=arc-20160816; b=nsPHeWWVNET0l9q51+TPD9LwzmyerQiXtmpPpBuNMdNC2E/CUwrPzSrs3ghuTznMmN h0WUm/nnemLagxeJYgYa0b/ycy3YhKtUzfyCmaA5kRRKNT3BB4RNsvD5q7HgvUF3vMlN oxqRL2KlEjPFYy2DDygmq3jbjGET3mVktube3lydWp7K06yxX2NWXnFWYkD+xFwR8y/u 8hSZxuHf8weBfdmPLWwboYjMraZ4VA6FkFzUkOoOswIPqws3VBXUkADe6dVeE9FBBVg4 iWi/mpyrErtU0apeo/n4cfq49eAJwsqhNYTvKLKil0hILkD/8XUjPtJO+x3rJLc5lDsM m6Jg== 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=1lm3/rGB5gzxY2hWle7HSmLlFl17Mwv70kMkcbTGCa0=; b=FFBmC0QzEJMQZj6l/zY3fJy6FTLiTPpcbYXgWeuLyvrLOEyAHDunW5oXjp5YC5mQ8W vUwiuey8KLjB+azO0IbjZEukBdgzofnkxARoSVAaBsqaDkceJ3MqNiapeTEITwegN1SJ gj6+PFGfitSgRf26IFjykurpPeiavBJ+fBWuzLSZIgMuOjjlDEDJhK5kGD6iYU4farLA iu7f+HMs64iKVpZgLzmmTtypHIgBqXMpNBVjq+5rd/xJE5bXX8qRhrh9vegxhLflZOXE hxgF6+HpWiClpfmI4W2bPbJlG5XwjjfQNFwoC3paOoyunXm90+Cozybtm8JlL7QobwcP F2zw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="tf/67tbN"; 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 k7si3900507pgm.462.2018.12.14.04.26.53; Fri, 14 Dec 2018 04:27:12 -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="tf/67tbN"; 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 S1731925AbeLNMMU (ORCPT + 99 others); Fri, 14 Dec 2018 07:12:20 -0500 Received: from mail.kernel.org ([198.145.29.99]:59344 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731896AbeLNMMO (ORCPT ); Fri, 14 Dec 2018 07:12:14 -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 D3559214D9; Fri, 14 Dec 2018 12:12:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1544789533; bh=BGdZi3vKjyO+cEcTPW0BIzq/6jdOMDtCkEFgzEaXBhc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tf/67tbN8IwX9X4Wmm/aaAzMZoBuexsRHONvDRe8stVwWWv9ZA4+6HYz6RDNGvYdi CSUTuiPAV6nivcAtUFK9dRasXi8qTck5c4LB6ZSK89EriIL+CJdmeB0A1VOXE/NBw1 cORX1lULlLoTdyhSF+VYh6hSBxELM2rdPh9oPHfc= 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.9 30/51] USB: omap_udc: use devm_request_irq() Date: Fri, 14 Dec 2018 13:00:32 +0100 Message-Id: <20181214115716.001953655@linuxfoundation.org> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20181214115713.244259772@linuxfoundation.org> References: <20181214115713.244259772@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.9-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 a8709f9e5648..2945408f0eec 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