[PATCH v1 1/1] perf/x86/amd/power: do not load amd power module in intel platform

From: Xiao Liang
Date: Mon Jan 22 2018 - 01:13:29 EST


"power" module can be loaded if it is not amd processor.

And user cannot unload it after loaded it. The following call trace generated
when tried to unload it.

BUG: unable to handle kernel NULL pointer dereference at (null)
IP: __list_del_entry_valid+0x29/0x90
PGD 0 P4D 0
Oops: 0000 [#1] SMP PTI
CPU: 1 PID: 26046 Comm: modprobe Not tainted 4.14.13-300.fc27.x86_64 #1
Hardware name: Xen HVM domU, BIOS 4.9.1 12/12/2017
task: ffff9a138f8dddc0 task.stack: ffffb0ec41cbc000
RIP: 0010:__list_del_entry_valid+0x29/0x90

Call Trace:
perf_pmu_unregister+0x25/0xf0
amd_power_pmu_exit+0x1c/0xd23 [power]
SyS_delete_module+0x1a8/0x2b0
? exit_to_usermode_loop+0x8f/0xb0
entry_SYSCALL_64_fastpath+0x20/0x83
RIP: 0033:0x7fb67d78e5c7

Signed-off-by: Xiao Liang <xiliang@xxxxxxxxxx>
---
arch/x86/events/amd/power.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/events/amd/power.c b/arch/x86/events/amd/power.c
index a6eee5ac4f58..2aefacf5c5b2 100644
--- a/arch/x86/events/amd/power.c
+++ b/arch/x86/events/amd/power.c
@@ -277,7 +277,7 @@ static int __init amd_power_pmu_init(void)
int ret;

if (!x86_match_cpu(cpu_match))
- return 0;
+ return -ENODEV;

if (!boot_cpu_has(X86_FEATURE_ACC_POWER))
return -ENODEV;
--
2.14.3