Received: by 10.223.185.116 with SMTP id b49csp13771wrg; Fri, 2 Mar 2018 12:43:05 -0800 (PST) X-Google-Smtp-Source: AG47ELuxrfPI4dFs5NrTx/hAPPCbGnhG8cNxKH2zcAxKyvrGstRPLxjrvhqE/zsOBIFYmX7fHB/x X-Received: by 10.98.133.86 with SMTP id u83mr6912264pfd.172.1520023385338; Fri, 02 Mar 2018 12:43:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520023385; cv=none; d=google.com; s=arc-20160816; b=LFra2+aaMKGwtyRjzkXHMCtQvchc11Ih2wKsV1NWrovWEzgABNp7usdQuBQalzpRP1 S7LfXtbSiO9xfJEL3/0lqksxWd3X8WssEn7vnb36RlIM+cSSisO/D3/TFaBGrtLSHXwQ 0WWsXf52CfDSbgYAIJhyEtK3c/CkBF8QJxwHYksJRxlHHG56lxhrgTOtgxZJ4/xMzeyU rs9g7b/2wmqDm9Ks/jpjxzH741m73kJusyTJW2t/VgZOuTAaFpcArsiKg5m4kF6+KVMw d2vtu5V/bzEmvK42ybkxZZsRV6Ta7NDgFY4Y9go7V0UObFWcw1Om52AyYLUtsWdPPjJX A/2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=tjSF07AMPjB8pAjIyua+KN1vnzsptoFM0XiZzRA8hoU=; b=XED4jUBVTPy3qkB1FoZ0iVnb5AKoZeCvgOCobQXNTbGafMcBt+7pEoYBFg0GakAHC3 Lh6S0J3nRRGB4vvscGJ1mzYEQVZHjg5ClLYlurZ19hys81hFmaNfLVRYV93EYHzVu724 pIuOS2TyRwErfzkDfPF+GHyxVyd3+0c++t4zyI/4aGmRzOfIO/Nis/SQ5fVrmsqPB0/V 6bCkTS+G+C5h1FQL1OrOmWYzT7cqwXq4WSmyM1IVpfpN5+elN2g1Am9rr+Ri/pxgkP8Y JPUn1L+QvF+g/snOTyDTWbYh/dcBA2twzZIixu619HupQ91LCWunYE6blqPcP5JZoNsH a4yw== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y190si5439313pfy.87.2018.03.02.12.42.49; Fri, 02 Mar 2018 12:43:05 -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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1947087AbeCBR7b (ORCPT + 99 others); Fri, 2 Mar 2018 12:59:31 -0500 Received: from bhuna.collabora.co.uk ([46.235.227.227]:48708 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1947001AbeCBR6S (ORCPT ); Fri, 2 Mar 2018 12:58:18 -0500 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: eballetbo) with ESMTPSA id E072A2761CD From: Enric Balletbo i Serra To: Sandy Huang , =?UTF-8?q?Heiko=20St=C3=BCbner?= Cc: Andrzej Hajda , linux-rockchip@lists.infradead.org, Archit Taneja , linux-kernel@vger.kernel.org, Russell King , Neil Armstrong , dri-devel@lists.freedesktop.org, Jose Abreu , Hans Verkuil , Laurent Pinchart , Jernej Skrabec , linux-arm-kernel@lists.infradead.org, David Airlie , Jeffy Chen , kernel@collabora.com, Enric Balletbo i Serra Subject: [PATCH v9 2/5] drm/rockchip: inno_hdmi: Fix error handling path. Date: Fri, 2 Mar 2018 18:57:54 +0100 Message-Id: <20180302175757.28192-3-enric.balletbo@collabora.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180302175757.28192-1-enric.balletbo@collabora.com> References: <20180302175757.28192-1-enric.balletbo@collabora.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Jeffy Chen Add missing error handling in bind(). Fixes: 412d4ae6b7a5 ("drm/rockchip: hdmi: add Innosilicon HDMI support") Signed-off-by: Jeffy Chen Signed-off-by: Thierry Escande [moved clk_disable_unprepare reordering in unbind to separate patch] Signed-off-by: Enric Balletbo i Serra --- Changes in v9: - Moved clk_disable_unprepare reordering in unbin to separate patch. drivers/gpu/drm/rockchip/inno_hdmi.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/rockchip/inno_hdmi.c b/drivers/gpu/drm/rockchip/inno_hdmi.c index f6ad48766d49..a5c661930250 100644 --- a/drivers/gpu/drm/rockchip/inno_hdmi.c +++ b/drivers/gpu/drm/rockchip/inno_hdmi.c @@ -849,8 +849,10 @@ static int inno_hdmi_bind(struct device *dev, struct device *master, } irq = platform_get_irq(pdev, 0); - if (irq < 0) - return irq; + if (irq < 0) { + ret = irq; + goto err_disable_clk; + } inno_hdmi_reset(hdmi); @@ -858,7 +860,7 @@ static int inno_hdmi_bind(struct device *dev, struct device *master, if (IS_ERR(hdmi->ddc)) { ret = PTR_ERR(hdmi->ddc); hdmi->ddc = NULL; - return ret; + goto err_disable_clk; } /* @@ -872,7 +874,7 @@ static int inno_hdmi_bind(struct device *dev, struct device *master, ret = inno_hdmi_register(drm, hdmi); if (ret) - return ret; + goto err_put_adapter; dev_set_drvdata(dev, hdmi); @@ -882,7 +884,17 @@ static int inno_hdmi_bind(struct device *dev, struct device *master, ret = devm_request_threaded_irq(dev, irq, inno_hdmi_hardirq, inno_hdmi_irq, IRQF_SHARED, dev_name(dev), hdmi); + if (ret < 0) + goto err_cleanup_hdmi; + return 0; +err_cleanup_hdmi: + hdmi->connector.funcs->destroy(&hdmi->connector); + hdmi->encoder.funcs->destroy(&hdmi->encoder); +err_put_adapter: + i2c_put_adapter(hdmi->ddc); +err_disable_clk: + clk_disable_unprepare(hdmi->pclk); return ret; } -- 2.16.1