Commit 08dd3872 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'sched-urgent-2020-04-19' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull scheduler fixes from Thomas Gleixner:
 "Two fixes for the scheduler:

   - Work around an uninitialized variable warning where GCC can't
     figure it out.

   - Allow 'isolcpus=' to skip unknown subparameters so that older
     kernels work with the commandline of a newer kernel. Improve the
     error output while at it"

* tag 'sched-urgent-2020-04-19' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  sched/vtime: Work around an unitialized variable warning
  sched/isolation: Allow "isolcpus=" to skip unknown sub-parameters
parents 5e7de581 e0d648f9
...@@ -1003,12 +1003,12 @@ u64 kcpustat_field(struct kernel_cpustat *kcpustat, ...@@ -1003,12 +1003,12 @@ u64 kcpustat_field(struct kernel_cpustat *kcpustat,
enum cpu_usage_stat usage, int cpu) enum cpu_usage_stat usage, int cpu)
{ {
u64 *cpustat = kcpustat->cpustat; u64 *cpustat = kcpustat->cpustat;
u64 val = cpustat[usage];
struct rq *rq; struct rq *rq;
u64 val;
int err; int err;
if (!vtime_accounting_enabled_cpu(cpu)) if (!vtime_accounting_enabled_cpu(cpu))
return cpustat[usage]; return val;
rq = cpu_rq(cpu); rq = cpu_rq(cpu);
......
...@@ -149,6 +149,9 @@ __setup("nohz_full=", housekeeping_nohz_full_setup); ...@@ -149,6 +149,9 @@ __setup("nohz_full=", housekeeping_nohz_full_setup);
static int __init housekeeping_isolcpus_setup(char *str) static int __init housekeeping_isolcpus_setup(char *str)
{ {
unsigned int flags = 0; unsigned int flags = 0;
bool illegal = false;
char *par;
int len;
while (isalpha(*str)) { while (isalpha(*str)) {
if (!strncmp(str, "nohz,", 5)) { if (!strncmp(str, "nohz,", 5)) {
...@@ -169,10 +172,24 @@ static int __init housekeeping_isolcpus_setup(char *str) ...@@ -169,10 +172,24 @@ static int __init housekeeping_isolcpus_setup(char *str)
continue; continue;
} }
pr_warn("isolcpus: Error, unknown flag\n"); /*
* Skip unknown sub-parameter and validate that it is not
* containing an invalid character.
*/
for (par = str, len = 0; *str && *str != ','; str++, len++) {
if (!isalpha(*str) && *str != '_')
illegal = true;
}
if (illegal) {
pr_warn("isolcpus: Invalid flag %.*s\n", len, par);
return 0; return 0;
} }
pr_info("isolcpus: Skipped unknown flag %.*s\n", len, par);
str++;
}
/* Default behaviour for isolcpus without flags */ /* Default behaviour for isolcpus without flags */
if (!flags) if (!flags)
flags |= HK_FLAG_DOMAIN; flags |= HK_FLAG_DOMAIN;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment