From patchwork Tue May 8 18:16:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 910411 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="ER2pTYay"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40gSTF507Cz9s2t for ; Wed, 9 May 2018 04:20:17 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933187AbeEHSUQ (ORCPT ); Tue, 8 May 2018 14:20:16 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:43054 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933359AbeEHSRd (ORCPT ); Tue, 8 May 2018 14:17:33 -0400 Received: by mail-lf0-f68.google.com with SMTP id g12-v6so47229966lfb.10; Tue, 08 May 2018 11:17:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=3Hm/I+dzWCo5KfoZUOh394ZxadE522yb6J45/Cu4jXM=; b=ER2pTYay9HfcAdxl5ZaDXq4uBheG4rLNjQIlNfRIx4pcYPymm7HJz2kVXurooWFzdu DsjUVUL5XeSGtn3o74nhID12IL/GwJSSTuQfgglQDsQXsNLanDgS7+hV+NFCeaM9gQhv mh+kWUtnhMSELLOqfXe0+XBVO29D5M87MNlf+qe3GZDqOY7JiWlMwiMi0bFV071BDL5y GziLiWki9viG5GgjyqkMiPRN+qYC90g6z+swK8BnLXXtMZikiNuaXO+eTARps4NGNuak 9sB2i2Q3liCJ8zjrLEXw91D79QqCrs4BidvScmx6CgcjHgYSqsMadoGi4GiHpKZFTqKt fbKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=3Hm/I+dzWCo5KfoZUOh394ZxadE522yb6J45/Cu4jXM=; b=ZgWyHe1VInFsQVX6B06ASDmB5czPgDpSaVTvC1lWIttPKW2BrUylu7/xe8l3esPqj9 oHYHFRbfHpKiWgT+XgfMY4ENvxsTlHhdGdg9WB8NBdIj5em9ktaemvcXSWVlF6icPUdw 9PG1CvXEn9r35Q8P+JAedXv2xzMMmShRxdTa9gKyFDHDsjs4CL9mgmpIlWzMsNwEhW+X 3F/Ehm3r6sJ5Ji51ZxHhHAzawtUABtAS2BbkpQB2hsq9ztodV5C38cML/hDYuv0JIDnr w+/JWnSFD3spP1OPbM7u6y37AGNzLrmjUVF68weW1fdN1z/jyOUc6DUZx1DbK76nJTwL ABkQ== X-Gm-Message-State: ALQs6tCD8DxsEYc+tABNMJXNxGKHDHLsH9PJnjpMfqukAuYbwlXQolKD M0n5L0FDIAdUht0FOS4nyZw= X-Google-Smtp-Source: AB8JxZq5XzLDhdiCdfJOkYpMyiIEXowRnfEarHx6iUI4OkJE54nwVEmg4E0LYNeCFwtKvPFU3x+MAA== X-Received: by 2002:a2e:934f:: with SMTP id m15-v6mr13700187ljh.39.1525803451825; Tue, 08 May 2018 11:17:31 -0700 (PDT) Received: from localhost.localdomain ([109.252.91.130]) by smtp.gmail.com with ESMTPSA id f64-v6sm2338699lfg.63.2018.05.08.11.17.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 May 2018 11:17:31 -0700 (PDT) From: Dmitry Osipenko To: Joerg Roedel , Thierry Reding , Jonathan Hunter Cc: linux-tegra@vger.kernel.org, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 5/9] iommu/tegra: gart: Clean up driver probe failure unwinding Date: Tue, 8 May 2018 21:16:56 +0300 Message-Id: <20180508181700.5169-6-digetx@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180508181700.5169-1-digetx@gmail.com> References: <20180508181700.5169-1-digetx@gmail.com> Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org Properly clean up allocated resources on driver probe failure. Signed-off-by: Dmitry Osipenko --- drivers/iommu/tegra-gart.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/iommu/tegra-gart.c b/drivers/iommu/tegra-gart.c index 08e0de4087d1..39305224c48d 100644 --- a/drivers/iommu/tegra-gart.c +++ b/drivers/iommu/tegra-gart.c @@ -466,8 +466,7 @@ static int tegra_gart_probe(struct platform_device *pdev) ret = iommu_device_register(&gart->iommu); if (ret) { dev_err(dev, "Failed to register IOMMU\n"); - iommu_device_sysfs_remove(&gart->iommu); - return ret; + goto remove_sysfs; } gart->dev = &pdev->dev; @@ -483,7 +482,8 @@ static int tegra_gart_probe(struct platform_device *pdev) gart->savedata = vmalloc(sizeof(u32) * gart->page_count); if (!gart->savedata) { dev_err(dev, "failed to allocate context save area\n"); - return -ENOMEM; + ret = -ENOMEM; + goto iommu_unregister; } platform_set_drvdata(pdev, gart); @@ -493,6 +493,13 @@ static int tegra_gart_probe(struct platform_device *pdev) tegra_mc_register_gart(&gart->mc_gart_handle); return 0; + +iommu_unregister: + iommu_device_unregister(&gart->iommu); +remove_sysfs: + iommu_device_sysfs_remove(&gart->iommu); + + return ret; } static const struct dev_pm_ops tegra_gart_pm_ops = {