Received: by 10.213.65.68 with SMTP id h4csp129313imn; Fri, 23 Mar 2018 00:40:42 -0700 (PDT) X-Google-Smtp-Source: AG47ELvTPWz0nuNfv0LSM3t0yMnnuTqRrbtM7Blt6EJjNKD7aa8Bowaa08nB0oF7L5vOAZmGA+9g X-Received: by 10.99.124.79 with SMTP id l15mr20173864pgn.19.1521790842184; Fri, 23 Mar 2018 00:40:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521790842; cv=none; d=google.com; s=arc-20160816; b=XheVqQycq30/t6ZtLfP0PifWi/xp9F2ZlyLUB+75wYF5iUYVKC9Xn1ELFX4TlSorAx IY00n0/5tMF0ptKK5vM3sLyv2lftE/oTyf2U3UuyDlbpug5zSqNt3iZ4ldRq9Jcq8QoJ QJFShu0F2HXIvAk4fl0wvlGsLoLSXWLJGOW1G3QyFHE4tpWyTlLGI+/2ZvPgU8VMkwYy nnXfOQW5t3JGKnV7d2Keg6EHZcpMp530do14EEJ8k92tm0ZxqlbCqUULodpQlj2dEJfN JKr/PA8KS0f4QElSD4WOSH97jMH6OPJFmZ+czCSbpJ8VaTc1PkcILElaUa6Tc/7vIfVJ O2TQ== 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=4eAaadAbnw2Dj7BGHQ8GsJVUkvI2q/V8T755XFjh4vY=; b=bxkIIqWIBqQkiTcdXKl98hHOMqvCjU0eJGtSvfM2VvU940RTvnDrgqwyTVQ3xcz7hU 4uDqkfZNYh+Yd4HkYNl8ZQgbssz9JDiKHC/+BvrmQl97NMDPyz61m9Y//uzRBsTrxnSM GAw75Jbb8wgKouzSj0JnTLLL8QnQ7CLiA11eflwU2K4tEX8Mv8/QhFYLxkvt2VkI19P+ CBBZorB0atTA3Ycnwl4C6kSTVenZUJ5roQXxnAh1BZvvCfGbIYMyKLACQ0kJfJPasV2d ElmjEfJ533YeSwE8YCOBJjZ0Dw3xdRnvVV+XN/ZGf3dmSSCF2rrcvBNgGu9UQr4EKfE2 15vg== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 13si6343493pfm.246.2018.03.23.00.40.27; Fri, 23 Mar 2018 00:40:42 -0700 (PDT) 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751854AbeCWHjU (ORCPT + 99 others); Fri, 23 Mar 2018 03:39:20 -0400 Received: from regular1.263xmail.com ([211.150.99.133]:54146 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751761AbeCWHjT (ORCPT ); Fri, 23 Mar 2018 03:39:19 -0400 Received: from jeffy.chen?rock-chips.com (unknown [192.168.167.205]) by regular1.263xmail.com (Postfix) with ESMTP id C71749013; Fri, 23 Mar 2018 15:39:15 +0800 (CST) X-263anti-spam: KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 4 Received: from localhost (localhost [127.0.0.1]) by smtp.263.net (Postfix) with ESMTPA id 2536133B; Fri, 23 Mar 2018 15:39:12 +0800 (CST) X-RL-SENDER: jeffy.chen@rock-chips.com X-FST-TO: linux-kernel@vger.kernel.org X-SENDER-IP: 103.29.142.67 X-LOGIN-NAME: jeffy.chen@rock-chips.com X-UNIQUE-TAG: <50f962a507dd32ab174f481b20983afe> X-ATTACHMENT-NUM: 0 X-SENDER: cjf@rock-chips.com X-DNS-TYPE: 0 Received: from localhost (unknown [103.29.142.67]) by smtp.263.net (Postfix) whith ESMTP id 262483PP2N; Fri, 23 Mar 2018 15:39:16 +0800 (CST) From: Jeffy Chen To: linux-kernel@vger.kernel.org Cc: jcliang@chromium.org, robin.murphy@arm.com, xxm@rock-chips.com, tfiga@chromium.org, Jeffy Chen , Heiko Stuebner , linux-rockchip@lists.infradead.org, iommu@lists.linux-foundation.org, Joerg Roedel , linux-arm-kernel@lists.infradead.org Subject: [PATCH v8 04/14] iommu/rockchip: Fix error handling in attach Date: Fri, 23 Mar 2018 15:38:04 +0800 Message-Id: <20180323073814.5802-5-jeffy.chen@rock-chips.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180323073814.5802-1-jeffy.chen@rock-chips.com> References: <20180323073814.5802-1-jeffy.chen@rock-chips.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tomasz Figa Currently if the driver encounters an error while attaching device, it will leave the IOMMU in an inconsistent state. Even though it shouldn't really happen in reality, let's just add proper error path to keep things consistent. Signed-off-by: Tomasz Figa Signed-off-by: Jeffy Chen Reviewed-by: Robin Murphy --- Changes in v8: None Changes in v7: None Changes in v6: None Changes in v5: Use out labels to save the duplication between the error and success paths. Changes in v4: None Changes in v3: None Changes in v2: Move irq request to probe(in patch[0]) drivers/iommu/rockchip-iommu.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c index ec3ff936aa60..5cbd5ceeb039 100644 --- a/drivers/iommu/rockchip-iommu.c +++ b/drivers/iommu/rockchip-iommu.c @@ -824,7 +824,7 @@ static int rk_iommu_attach_device(struct iommu_domain *domain, ret = rk_iommu_force_reset(iommu); if (ret) - return ret; + goto out_disable_stall; iommu->domain = domain; @@ -837,7 +837,7 @@ static int rk_iommu_attach_device(struct iommu_domain *domain, ret = rk_iommu_enable_paging(iommu); if (ret) - return ret; + goto out_disable_stall; spin_lock_irqsave(&rk_domain->iommus_lock, flags); list_add_tail(&iommu->node, &rk_domain->iommus); @@ -845,9 +845,9 @@ static int rk_iommu_attach_device(struct iommu_domain *domain, dev_dbg(dev, "Attached to iommu domain\n"); +out_disable_stall: rk_iommu_disable_stall(iommu); - - return 0; + return ret; } static void rk_iommu_detach_device(struct iommu_domain *domain, -- 2.11.0