Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp8858312rwl; Sat, 31 Dec 2022 13:33:19 -0800 (PST) X-Google-Smtp-Source: AMrXdXvmJy+FTvVPnMm4wTnMyQHuhvLkZSAdrVTDVT5+jnPq+bM/LGKN7ysTXubESqPK5+vlNylg X-Received: by 2002:a17:906:6d8a:b0:7c0:f907:89a2 with SMTP id h10-20020a1709066d8a00b007c0f90789a2mr27070898ejt.61.1672522399259; Sat, 31 Dec 2022 13:33:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672522399; cv=none; d=google.com; s=arc-20160816; b=bDTtTGNG/k9Pat29YX5eIvpIqZbUhqhxGnE/QB35wsdl9INuEdO4ecFdlaugeQa8p2 c9Cc9dDQotIoGMwcbzmMbBus2kRMrkdCanOzNtObohTgUHYxrJgFI/0pplw4vs3brZ7+ ZqGZ6ZNKXN8uZ9ApapX6QjUAJgp6UlRErgDzaaWPt4qZ7d4LBoeti2Mmma4ioRHYFuRo 5xONwrKjmijdm/V8cSMDKcOm/BdlkDTHBWYmVRQfb8L41AR9qcFOK9Zec84JiWyuVVig pVkmA3k27BPBVPrvcpGLtYoOarYpGX7IMEy95Yb+iyBMkxGtLSxiKz8iyX68oZoUIciN nKHA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=1xQeS4+QDUYjyD4Z58oqYN6I1tFST9m3Dn6PccxmMJ4=; b=YowL4ab0omf6dARumPx14Lb83OaoIGqlDWLrR+JtkhirtlK+ESvLpKyUnMUZNkTbcJ yFYZ7Dg9mcaCWSBOzSztaMl2Rn7F40gZ5lO4X2KIaUgp/tl5w83OI+i7KnKsHvHGIgPA N5BZRnOASdNnu7Yp2H4ueUNwTIYKcj+C4QufIeZB2ehJlyUO5Aea7aIwRPlOrukg41in C5Lqpqbaz5N3RQ8Vkm0JuZ5W2ERzpnQ4IttjAb5QLnObDmZsjrnIgxUyOkQbz4arqQT3 BRFNzb9FfsgBSQo0JPod3uv27cfvxMQZUDhIfhkMzxKbgMn18LUvAAWLZ/Q4tXoZTNqJ 1rjw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=pDo1oCea; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h25-20020aa7c619000000b00489e993b8easi5902080edq.630.2022.12.31.13.33.04; Sat, 31 Dec 2022 13:33:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=pDo1oCea; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S235901AbiLaUFP (ORCPT + 61 others); Sat, 31 Dec 2022 15:05:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33760 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235842AbiLaUFG (ORCPT ); Sat, 31 Dec 2022 15:05:06 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D274EA449; Sat, 31 Dec 2022 12:05:00 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 6F25760C38; Sat, 31 Dec 2022 20:05:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A748CC433EF; Sat, 31 Dec 2022 20:04:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1672517099; bh=2au/8bzdU54fuOLPavMaj3vnB5+dwzQQIVuc7L2p3uk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pDo1oCeaNcl2NM5ByF245qZ/9pm94NXGH4eH0Y8hDOMQqQXdXv33nHmZxG+QUhDM8 20ul14F1onfDx0g/LvH0BONk/JePHcmqfFA6LyXqwZMqVED57fQ87VIuj5UD5/BF3f 2fIUVl/6lVmcJ8uZ31t9PcM74sAkZAS2V2nfz5kF6O1hhDYv3IorKoYsPEd5GGvs5+ SM/Sc8WeHUpG5rMBvDEp6Dn6vrj3xhcDrb09YxOBEWgkizTxGy2sZQRELuWXyHBMhW 3XRlCgjjljhvFgqphI9O0GJNfk0rQnZPmH/oorUVUl5pl98DQw9EA/nXWGbD0P7auB MXT+lcDsytyxg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Philip Yang , Felix Kuehling , Alex Deucher , Sasha Levin , christian.koenig@amd.com, Xinhui.Pan@amd.com, airlied@gmail.com, daniel@ffwll.ch, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 6.1 6/7] drm/amdkfd: Fix kfd_process_device_init_vm error handling Date: Sat, 31 Dec 2022 15:04:38 -0500 Message-Id: <20221231200439.1748686-6-sashal@kernel.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20221231200439.1748686-1-sashal@kernel.org> References: <20221231200439.1748686-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Philip Yang [ Upstream commit 29d48b87db64b6697ddad007548e51d032081c59 ] Should only destroy the ib_mem and let process cleanup worker to free the outstanding BOs. Reset the pointer in pdd->qpd structure, to avoid NULL pointer access in process destroy worker. BUG: kernel NULL pointer dereference, address: 0000000000000010 Call Trace: amdgpu_amdkfd_gpuvm_unmap_gtt_bo_from_kernel+0x46/0xb0 [amdgpu] kfd_process_device_destroy_cwsr_dgpu+0x40/0x70 [amdgpu] kfd_process_destroy_pdds+0x71/0x190 [amdgpu] kfd_process_wq_release+0x2a2/0x3b0 [amdgpu] process_one_work+0x2a1/0x600 worker_thread+0x39/0x3d0 Signed-off-by: Philip Yang Reviewed-by: Felix Kuehling Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/amdkfd/kfd_process.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c index 951b63677248..9821fa9268d3 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c @@ -689,13 +689,13 @@ void kfd_process_destroy_wq(void) } static void kfd_process_free_gpuvm(struct kgd_mem *mem, - struct kfd_process_device *pdd, void *kptr) + struct kfd_process_device *pdd, void **kptr) { struct kfd_dev *dev = pdd->dev; - if (kptr) { + if (kptr && *kptr) { amdgpu_amdkfd_gpuvm_unmap_gtt_bo_from_kernel(mem); - kptr = NULL; + *kptr = NULL; } amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(dev->adev, mem, pdd->drm_priv); @@ -795,7 +795,7 @@ static void kfd_process_device_destroy_ib_mem(struct kfd_process_device *pdd) if (!qpd->ib_kaddr || !qpd->ib_base) return; - kfd_process_free_gpuvm(qpd->ib_mem, pdd, qpd->ib_kaddr); + kfd_process_free_gpuvm(qpd->ib_mem, pdd, &qpd->ib_kaddr); } struct kfd_process *kfd_create_process(struct file *filep) @@ -1277,7 +1277,7 @@ static void kfd_process_device_destroy_cwsr_dgpu(struct kfd_process_device *pdd) if (!dev->cwsr_enabled || !qpd->cwsr_kaddr || !qpd->cwsr_base) return; - kfd_process_free_gpuvm(qpd->cwsr_mem, pdd, qpd->cwsr_kaddr); + kfd_process_free_gpuvm(qpd->cwsr_mem, pdd, &qpd->cwsr_kaddr); } void kfd_process_set_trap_handler(struct qcm_process_device *qpd, @@ -1598,8 +1598,8 @@ int kfd_process_device_init_vm(struct kfd_process_device *pdd, return 0; err_init_cwsr: + kfd_process_device_destroy_ib_mem(pdd); err_reserve_ib_mem: - kfd_process_device_free_bos(pdd); pdd->drm_priv = NULL; return ret; -- 2.35.1