Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2078225imu; Wed, 28 Nov 2018 21:59:31 -0800 (PST) X-Google-Smtp-Source: AFSGD/X8/RlRSpDF1sMatzh77UmO1kLL4gt7A5hn+lrkKj2v39GkEa/q4G2+zRp+1+tpldevtsNa X-Received: by 2002:a63:b4c:: with SMTP id a12mr151001pgl.131.1543471171678; Wed, 28 Nov 2018 21:59:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543471171; cv=none; d=google.com; s=arc-20160816; b=CAtDt47D9TCHCsZ6wLQIJE3A2g9k+cDTcOemdpk/D8QRnlnEJrJpqFbA+tsKntrcux jo5tjHOqwoH4bkpzueg7Xtm7Jw8os0jkhZzcVNG4x1k6zRz4PLhSTm0lPMbzVA6nJMFJ DP8qogR0W/67de//vBKYUSA9u7+d3BzPS3ph2Yg1NH3t2QwsXkrWOq5kMLiYZBounIeO ssoC8AS5UKuHmsSIAUIAcAioTt+HdIeCg2WW0l/uZLyv2mrkli/48CFi9XN4EcB9wEnj bQudiC5nPpH8Z5qSxzLuiWS4guHQpNre61+nFpgW69siAvS5Xv5q662NUq1NyqyYBjKS vWNw== 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:dkim-signature; bh=+5PWtEkfXiyZYmWn/rAjVbWu3AxDq3SzlRLpBWI8Qqs=; b=Sz9XCaijPkcRKydzRdM5MtDVew+7alSeJ3UIbrHe1tOT/DXU4r7GTh4P16ktemPt0X BRKALn2h7YrG7jMaYYtlHKKaXIjoIrtSClkOXgtwfLc5+OKAMkqUIiI8IXwnill5m0g7 h27lQwYYu59GTJDvLdgmc9FMdp7aSdmum0AR9WmIuOMVHdNcRvbNZuRF8Jn/T5BjhC+T vqRfXoY0jkT6ZqPtbFmoE3AolYuuayE+Wt03cL5Qtk2mHSB3qUHsKxoemBlALKQHmu/1 I9paWBjymxwhdapNqPo90W8iGq/cm+2aSUOp7CcPAXZIfkKBgcn0MBe9cUH6ff8A4oJ2 hruA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=du0rPcws; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s192si1193974pgc.144.2018.11.28.21.59.17; Wed, 28 Nov 2018 21:59:31 -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=du0rPcws; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728099AbeK2RBI (ORCPT + 99 others); Thu, 29 Nov 2018 12:01:08 -0500 Received: from mail.kernel.org ([198.145.29.99]:34276 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727477AbeK2RBH (ORCPT ); Thu, 29 Nov 2018 12:01:07 -0500 Received: from sasha-vm.mshome.net (unknown [37.142.5.207]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2E7D320868; Thu, 29 Nov 2018 05:56:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1543471017; bh=9hZFp06ozPy7fNsl3MxY/KaUHtID5Am0/ezAiBIyWgo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=du0rPcwsq12+RHQz/YeKuGoGwIQEf6LQzzKjaNwnziM3kBHN7qTlfPm1oDSOOapmj WHiYtsTGxes5k8Hab1trUg9iY5qoCGyU8lEG+gO8fzU+3bCwobk2YbMVjJIJ+SMp/D jAA6qdFU35fBPtlpqiRf6K3ZELcrlSuQ+1bx2SzI= From: Sasha Levin To: stable@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Geert Uytterhoeven , Joerg Roedel , Sasha Levin , iommu@lists.linux-foundation.org Subject: [PATCH AUTOSEL 4.19 08/68] iommu/ipmmu-vmsa: Fix crash on early domain free Date: Thu, 29 Nov 2018 00:54:59 -0500 Message-Id: <20181129055559.159228-8-sashal@kernel.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181129055559.159228-1-sashal@kernel.org> References: <20181129055559.159228-1-sashal@kernel.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Geert Uytterhoeven [ Upstream commit e5b78f2e349eef5d4fca5dc1cf5a3b4b2cc27abd ] If iommu_ops.add_device() fails, iommu_ops.domain_free() is still called, leading to a crash, as the domain was only partially initialized: ipmmu-vmsa e67b0000.mmu: Cannot accommodate DMA translation for IOMMU page tables sata_rcar ee300000.sata: Unable to initialize IPMMU context iommu: Failed to add device ee300000.sata to group 0: -22 Unable to handle kernel NULL pointer dereference at virtual address 0000000000000038 ... Call trace: ipmmu_domain_free+0x1c/0xa0 iommu_group_release+0x48/0x68 kobject_put+0x74/0xe8 kobject_del.part.0+0x3c/0x50 kobject_put+0x60/0xe8 iommu_group_get_for_dev+0xa8/0x1f0 ipmmu_add_device+0x1c/0x40 of_iommu_configure+0x118/0x190 Fix this by checking if the domain's context already exists, before trying to destroy it. Signed-off-by: Geert Uytterhoeven Reviewed-by: Robin Murphy Fixes: d25a2a16f0889 ('iommu: Add driver for Renesas VMSA-compatible IPMMU') Signed-off-by: Joerg Roedel Signed-off-by: Sasha Levin --- drivers/iommu/ipmmu-vmsa.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c index 22b94f8a9a04..d8598e44e381 100644 --- a/drivers/iommu/ipmmu-vmsa.c +++ b/drivers/iommu/ipmmu-vmsa.c @@ -501,6 +501,9 @@ static int ipmmu_domain_init_context(struct ipmmu_vmsa_domain *domain) static void ipmmu_domain_destroy_context(struct ipmmu_vmsa_domain *domain) { + if (!domain->mmu) + return; + /* * Disable the context. Flush the TLB as required when modifying the * context registers. -- 2.17.1