From b11cff39b13c7d701aaebf2362f1fbb5452a01ab Mon Sep 17 00:00:00 2001 From: Park Bumgyu Date: Tue, 24 Jul 2018 13:02:35 +0900 Subject: [PATCH] cpu: fix prevent defect Change-Id: I97b0f154cfd224b47f8266972bdfa488a0969e28 Signed-off-by: Park Bumgyu --- drivers/cpuidle/profiler.c | 4 ++-- drivers/soc/samsung/exynos-cpupm.c | 2 +- include/trace/events/ems.h | 2 +- kernel/sched/ems/energy.c | 4 ++++ 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/cpuidle/profiler.c b/drivers/cpuidle/profiler.c index 580d2ed42fc0..c4725a53c126 100644 --- a/drivers/cpuidle/profiler.c +++ b/drivers/cpuidle/profiler.c @@ -482,7 +482,7 @@ cpuidle_profile_cpu_idle_register(struct cpuidle_driver *drv) } for (i = 0; i < state_count; i++) - strncpy(state[i].desc, drv->states[i].desc, DESC_LEN); + strncpy(state[i].desc, drv->states[i].desc, DESC_LEN - 1); cpu_idle_state = state; cpu_idle_state_count = state_count; @@ -500,7 +500,7 @@ cpuidle_profile_group_idle_register(int id, const char *name) } state->id = id; - strncpy(state->desc, name, DESC_LEN); + strncpy(state->desc, name, DESC_LEN - 1); group_idle_state[group_idle_state_count] = state; group_idle_state_count++; diff --git a/drivers/soc/samsung/exynos-cpupm.c b/drivers/soc/samsung/exynos-cpupm.c index dc456e9f5d6b..5666aa1bdd44 100644 --- a/drivers/soc/samsung/exynos-cpupm.c +++ b/drivers/soc/samsung/exynos-cpupm.c @@ -842,7 +842,7 @@ static int __init cpu_power_mode_init(void) } mode->id = id++; - strncpy(mode->name, dn->name, NAME_LEN); + strncpy(mode->name, dn->name, NAME_LEN - 1); of_property_read_u32(dn, "target-residency", &mode->target_residency); of_property_read_u32(dn, "psci-index", &mode->psci_index); diff --git a/include/trace/events/ems.h b/include/trace/events/ems.h index d5f7529a8d08..db0723fb607a 100644 --- a/include/trace/events/ems.h +++ b/include/trace/events/ems.h @@ -435,7 +435,7 @@ TRACE_EVENT(ems_manage_band, memcpy(__entry->comm, p->comm, TASK_COMM_LEN); __entry->pid = p->pid; __entry->band_id = band_id; - strncpy(__entry->event, event, 64); + strncpy(__entry->event, event, 63); ), TP_printk("comm=%s pid=%d band_id=%d event=%s", diff --git a/kernel/sched/ems/energy.c b/kernel/sched/ems/energy.c index 7acd9adc210e..a609b611bdf1 100644 --- a/kernel/sched/ems/energy.c +++ b/kernel/sched/ems/energy.c @@ -399,6 +399,10 @@ void init_sched_energy_table(struct cpumask *cpus, int table_size, unsigned long max_mips_freq = 0; int last_state; + cpumask_and(cpus, cpus, cpu_possible_mask); + if (cpumask_empty(cpus)) + return; + mips = per_cpu(energy_table, cpumask_any(cpus)).mips; for_each_cpu(cpu, cpus) { /* -- 2.20.1