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=ham 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 8C5D8C31E40 for ; Tue, 6 Aug 2019 21:34:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5F8C421874 for ; Tue, 6 Aug 2019 21:34:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1565127263; bh=SW2v2vdzS/8zPs2QA6T6uw7sxmgEWHGl2EshkHf2GcQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=s0gHf9lIloDuGBsdlCFdKeJo1zSFRfdjuwhdB8OquQWsGF1Q2osBGGQ3aUGmbDB08 CUKtSo/3wpN9WrHUeWaIrLURE/eKjETTsyVEwVkk6G7+e0iq/d9MrYsmsVoZDuY6ME CwXSl5oBA1JGViD7qJmZLVc88/rCtlElOBRwkgKQ= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727647AbfHFVeW (ORCPT ); Tue, 6 Aug 2019 17:34:22 -0400 Received: from mail.kernel.org ([198.145.29.99]:52122 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727581AbfHFVeT (ORCPT ); Tue, 6 Aug 2019 17:34:19 -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 A06EA216F4; Tue, 6 Aug 2019 21:34:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1565127258; bh=SW2v2vdzS/8zPs2QA6T6uw7sxmgEWHGl2EshkHf2GcQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rZfkgAgNEh+TYfloj0ieIirFT+CmVa2Xh13EQRBkpA1abfTGOiWsKk7/fixWJvZt6 r6108+q/IGhtOPNNceI/6ngKWgV7YQibXnqJyjoX0taRsCm01OonIRvTMzK/QposIo nMIP/xV/vcLM1rT+N/rvKpJyujVZCDpWbF7WYs4U= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Evan Quan , Alex Deucher , Sasha Levin , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 5.2 30/59] drm/amd/powerplay: fix null pointer dereference around dpm state relates Date: Tue, 6 Aug 2019 17:32:50 -0400 Message-Id: <20190806213319.19203-30-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190806213319.19203-1-sashal@kernel.org> References: <20190806213319.19203-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: Evan Quan [ Upstream commit 479156f2e5540077377a823eaf5a4263bd329063 ] DPM state relates are not supported on the new SW SMU ASICs. But still it's not OK to trigger null pointer dereference on accessing them. Signed-off-by: Evan Quan Reviewed-by: Alex Deucher Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 18 +++++++++++++----- drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 3 ++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c index abeaab4bf1bc2..d55519bc34e52 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c @@ -144,12 +144,16 @@ static ssize_t amdgpu_get_dpm_state(struct device *dev, struct amdgpu_device *adev = ddev->dev_private; enum amd_pm_state_type pm; - if (is_support_sw_smu(adev) && adev->smu.ppt_funcs->get_current_power_state) - pm = amdgpu_smu_get_current_power_state(adev); - else if (adev->powerplay.pp_funcs->get_current_power_state) + if (is_support_sw_smu(adev)) { + if (adev->smu.ppt_funcs->get_current_power_state) + pm = amdgpu_smu_get_current_power_state(adev); + else + pm = adev->pm.dpm.user_state; + } else if (adev->powerplay.pp_funcs->get_current_power_state) { pm = amdgpu_dpm_get_current_power_state(adev); - else + } else { pm = adev->pm.dpm.user_state; + } return snprintf(buf, PAGE_SIZE, "%s\n", (pm == POWER_STATE_TYPE_BATTERY) ? "battery" : @@ -176,7 +180,11 @@ static ssize_t amdgpu_set_dpm_state(struct device *dev, goto fail; } - if (adev->powerplay.pp_funcs->dispatch_tasks) { + if (is_support_sw_smu(adev)) { + mutex_lock(&adev->pm.mutex); + adev->pm.dpm.user_state = state; + mutex_unlock(&adev->pm.mutex); + } else if (adev->powerplay.pp_funcs->dispatch_tasks) { amdgpu_dpm_dispatch_task(adev, AMD_PP_TASK_ENABLE_USER_STATE, &state); } else { mutex_lock(&adev->pm.mutex); diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c index eec329ab60370..61a6d183c153f 100644 --- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c +++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c @@ -63,7 +63,8 @@ int smu_get_power_num_states(struct smu_context *smu, /* not support power state */ memset(state_info, 0, sizeof(struct pp_states_info)); - state_info->nums = 0; + state_info->nums = 1; + state_info->states[0] = POWER_STATE_TYPE_DEFAULT; return 0; } -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: [PATCH AUTOSEL 5.2 30/59] drm/amd/powerplay: fix null pointer dereference around dpm state relates Date: Tue, 6 Aug 2019 17:32:50 -0400 Message-ID: <20190806213319.19203-30-sashal@kernel.org> References: <20190806213319.19203-1-sashal@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190806213319.19203-1-sashal-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Alex Deucher , Sasha Levin , Evan Quan , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogRXZhbiBRdWFuIDxldmFuLnF1YW5AYW1kLmNvbT4KClsgVXBzdHJlYW0gY29tbWl0IDQ3 OTE1NmYyZTU1NDAwNzczNzdhODIzZWFmNWE0MjYzYmQzMjkwNjMgXQoKRFBNIHN0YXRlIHJlbGF0 ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhlIG5ldyBTVyBTTVUgQVNJQ3MuIEJ1dCBzdGlsbApp dCdzIG5vdCBPSyB0byB0cmlnZ2VyIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBvbiBhY2Nlc3Np bmcgdGhlbS4KClNpZ25lZC1vZmYtYnk6IEV2YW4gUXVhbiA8ZXZhbi5xdWFuQGFtZC5jb20+ClJl dmlld2VkLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+ClNpZ25l ZC1vZmYtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KU2lnbmVk LW9mZi1ieTogU2FzaGEgTGV2aW4gPHNhc2hhbEBrZXJuZWwub3JnPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wbS5jICAgICB8IDE4ICsrKysrKysrKysrKystLS0tLQog ZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kZ3B1X3NtdS5jIHwgIDMgKystCiAyIGZp bGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3BtLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfcG0uYwppbmRleCBhYmVhYWI0YmYxYmMyLi5kNTU1MTliYzM0 ZTUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG0uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG0uYwpAQCAtMTQ0LDEyICsx NDQsMTYgQEAgc3RhdGljIHNzaXplX3QgYW1kZ3B1X2dldF9kcG1fc3RhdGUoc3RydWN0IGRldmlj ZSAqZGV2LAogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZGRldi0+ZGV2X3ByaXZhdGU7 CiAJZW51bSBhbWRfcG1fc3RhdGVfdHlwZSBwbTsKIAotCWlmIChpc19zdXBwb3J0X3N3X3NtdShh ZGV2KSAmJiBhZGV2LT5zbXUucHB0X2Z1bmNzLT5nZXRfY3VycmVudF9wb3dlcl9zdGF0ZSkKLQkJ cG0gPSBhbWRncHVfc211X2dldF9jdXJyZW50X3Bvd2VyX3N0YXRlKGFkZXYpOwotCWVsc2UgaWYg KGFkZXYtPnBvd2VycGxheS5wcF9mdW5jcy0+Z2V0X2N1cnJlbnRfcG93ZXJfc3RhdGUpCisJaWYg KGlzX3N1cHBvcnRfc3dfc211KGFkZXYpKSB7CisJCWlmIChhZGV2LT5zbXUucHB0X2Z1bmNzLT5n ZXRfY3VycmVudF9wb3dlcl9zdGF0ZSkKKwkJCXBtID0gYW1kZ3B1X3NtdV9nZXRfY3VycmVudF9w b3dlcl9zdGF0ZShhZGV2KTsKKwkJZWxzZQorCQkJcG0gPSBhZGV2LT5wbS5kcG0udXNlcl9zdGF0 ZTsKKwl9IGVsc2UgaWYgKGFkZXYtPnBvd2VycGxheS5wcF9mdW5jcy0+Z2V0X2N1cnJlbnRfcG93 ZXJfc3RhdGUpIHsKIAkJcG0gPSBhbWRncHVfZHBtX2dldF9jdXJyZW50X3Bvd2VyX3N0YXRlKGFk ZXYpOwotCWVsc2UKKwl9IGVsc2UgewogCQlwbSA9IGFkZXYtPnBtLmRwbS51c2VyX3N0YXRlOwor CX0KIAogCXJldHVybiBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVzXG4iLAogCQkJKHBtID09 IFBPV0VSX1NUQVRFX1RZUEVfQkFUVEVSWSkgPyAiYmF0dGVyeSIgOgpAQCAtMTc2LDcgKzE4MCwx MSBAQCBzdGF0aWMgc3NpemVfdCBhbWRncHVfc2V0X2RwbV9zdGF0ZShzdHJ1Y3QgZGV2aWNlICpk ZXYsCiAJCWdvdG8gZmFpbDsKIAl9CiAKLQlpZiAoYWRldi0+cG93ZXJwbGF5LnBwX2Z1bmNzLT5k aXNwYXRjaF90YXNrcykgeworCWlmIChpc19zdXBwb3J0X3N3X3NtdShhZGV2KSkgeworCQltdXRl eF9sb2NrKCZhZGV2LT5wbS5tdXRleCk7CisJCWFkZXYtPnBtLmRwbS51c2VyX3N0YXRlID0gc3Rh dGU7CisJCW11dGV4X3VubG9jaygmYWRldi0+cG0ubXV0ZXgpOworCX0gZWxzZSBpZiAoYWRldi0+ cG93ZXJwbGF5LnBwX2Z1bmNzLT5kaXNwYXRjaF90YXNrcykgewogCQlhbWRncHVfZHBtX2Rpc3Bh dGNoX3Rhc2soYWRldiwgQU1EX1BQX1RBU0tfRU5BQkxFX1VTRVJfU1RBVEUsICZzdGF0ZSk7CiAJ fSBlbHNlIHsKIAkJbXV0ZXhfbG9jaygmYWRldi0+cG0ubXV0ZXgpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kZ3B1X3NtdS5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvYW1kZ3B1X3NtdS5jCmluZGV4IGVlYzMyOWFiNjAzNzAuLjYxYTZkMTgz YzE1M2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2FtZGdwdV9z bXUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9hbWRncHVfc211LmMKQEAg LTYzLDcgKzYzLDggQEAgaW50IHNtdV9nZXRfcG93ZXJfbnVtX3N0YXRlcyhzdHJ1Y3Qgc211X2Nv bnRleHQgKnNtdSwKIAogCS8qIG5vdCBzdXBwb3J0IHBvd2VyIHN0YXRlICovCiAJbWVtc2V0KHN0 YXRlX2luZm8sIDAsIHNpemVvZihzdHJ1Y3QgcHBfc3RhdGVzX2luZm8pKTsKLQlzdGF0ZV9pbmZv LT5udW1zID0gMDsKKwlzdGF0ZV9pbmZvLT5udW1zID0gMTsKKwlzdGF0ZV9pbmZvLT5zdGF0ZXNb MF0gPSBQT1dFUl9TVEFURV9UWVBFX0RFRkFVTFQ7CiAKIAlyZXR1cm4gMDsKIH0KLS0gCjIuMjAu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdm eCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4