From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D8CCDC74A2B for ; Wed, 10 Jul 2019 15:02:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A51F021473 for ; Wed, 10 Jul 2019 15:02:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1562770975; bh=DKmi2KSCPS3wMYyfLM0R/J5dmrI2ctocBVqUSRoPeWo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=sVQasyWgfMZAIVaNZCM1zJb264IqYYeMYYToe417NwlxDGThqCy/4aizAmg/8rWQZ I42KqCYP1qiiZ0S1lYUiMSHNOtxJnjqkQQdLLuU0xclgLxiMCP6F2vbmdqwepvp43w HCkqBpf5lsgXRJlrgDpgQmUFYsQP1F1SQiSa6/o4= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728014AbfGJPCy (ORCPT ); Wed, 10 Jul 2019 11:02:54 -0400 Received: from mail.kernel.org ([198.145.29.99]:34654 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727985AbfGJPCv (ORCPT ); Wed, 10 Jul 2019 11:02:51 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (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 9E8F5208E4; Wed, 10 Jul 2019 15:02:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1562770970; bh=DKmi2KSCPS3wMYyfLM0R/J5dmrI2ctocBVqUSRoPeWo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HdgMR5AvQcCP4iK2wHfKzP33QSZGFpL1ecUr96teZ7+qzTuhp/LmugCpQyrKiKOW9 pvyuGX6lfXzkGBP7Vg8qWzn/fkraz2/bXCQG7Ttn5GVVsohOpTpq6nkm8tWacVJF7W wkc6UQWU9tlotbmUx+cLiR3XlS/jelCYn3+9U+KU= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Lucas Stach , Russell King , Sasha Levin , dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 5.1 05/11] drm/etnaviv: add missing failure path to destroy suballoc Date: Wed, 10 Jul 2019 11:02:32 -0400 Message-Id: <20190710150240.6984-5-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190710150240.6984-1-sashal@kernel.org> References: <20190710150240.6984-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Lucas Stach [ Upstream commit be132e1375c1fffe48801296279079f8a59a9ed3 ] When something goes wrong in the GPU init after the cmdbuf suballocator has been constructed, we fail to destroy it properly. This causes havok later when the GPU is unbound due to a module unload or similar. Fixes: e66774dd6f6a (drm/etnaviv: add cmdbuf suballocator) Signed-off-by: Lucas Stach Tested-by: Russell King Signed-off-by: Sasha Levin --- drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c index 6904535475de..4cf44575a27b 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c @@ -762,7 +762,7 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu) if (IS_ERR(gpu->cmdbuf_suballoc)) { dev_err(gpu->dev, "Failed to create cmdbuf suballocator\n"); ret = PTR_ERR(gpu->cmdbuf_suballoc); - goto fail; + goto destroy_iommu; } /* Create buffer: */ @@ -770,7 +770,7 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu) PAGE_SIZE); if (ret) { dev_err(gpu->dev, "could not create command buffer\n"); - goto destroy_iommu; + goto destroy_suballoc; } if (gpu->mmu->version == ETNAVIV_IOMMU_V1 && @@ -802,6 +802,9 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu) free_buffer: etnaviv_cmdbuf_free(&gpu->buffer); gpu->buffer.suballoc = NULL; +destroy_suballoc: + etnaviv_cmdbuf_suballoc_destroy(gpu->cmdbuf_suballoc); + gpu->cmdbuf_suballoc = NULL; destroy_iommu: etnaviv_iommu_destroy(gpu->mmu); gpu->mmu = NULL; -- 2.20.1