You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'akpm' (patchbomb from Andrew) into next
Merge misc updates from Andrew Morton: - a few fixes for 3.16. Cc'ed to stable so they'll get there somehow. - various misc fixes and cleanups - most of the ocfs2 queue. Review is slow... - most of MM. The MM queue is pretty huge this time, but not much in the way of feature work. - some tweaks under kernel/ - printk maintenance work - updates to lib/ - checkpatch updates - tweaks to init/ * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (276 commits) fs/autofs4/dev-ioctl.c: add __init to autofs_dev_ioctl_init fs/ncpfs/getopt.c: replace simple_strtoul by kstrtoul init/main.c: remove an ifdef kthreads: kill CLONE_KERNEL, change kernel_thread(kernel_init) to avoid CLONE_SIGHAND init/main.c: add initcall_blacklist kernel parameter init/main.c: don't use pr_debug() fs/binfmt_flat.c: make old_reloc() static fs/binfmt_elf.c: fix bool assignements fs/efs: convert printk(KERN_DEBUG to pr_debug fs/efs: add pr_fmt / use __func__ fs/efs: convert printk to pr_foo() scripts/checkpatch.pl: device_initcall is not the only __initcall substitute checkpatch: check stable email address checkpatch: warn on unnecessary void function return statements checkpatch: prefer kstrto<foo> to sscanf(buf, "%<lhuidx>", &bar); checkpatch: add warning for kmalloc/kzalloc with multiply checkpatch: warn on #defines ending in semicolon checkpatch: make --strict a default for files in drivers/net and net/ checkpatch: always warn on missing blank line after variable declaration block checkpatch: fix wildcard DT compatible string checking ...
This commit is contained in:
@@ -19,8 +19,8 @@
|
||||
|
||||
static void backtrace_test_normal(void)
|
||||
{
|
||||
printk("Testing a backtrace from process context.\n");
|
||||
printk("The following trace is a kernel self test and not a bug!\n");
|
||||
pr_info("Testing a backtrace from process context.\n");
|
||||
pr_info("The following trace is a kernel self test and not a bug!\n");
|
||||
|
||||
dump_stack();
|
||||
}
|
||||
@@ -37,8 +37,8 @@ static DECLARE_TASKLET(backtrace_tasklet, &backtrace_test_irq_callback, 0);
|
||||
|
||||
static void backtrace_test_irq(void)
|
||||
{
|
||||
printk("Testing a backtrace from irq context.\n");
|
||||
printk("The following trace is a kernel self test and not a bug!\n");
|
||||
pr_info("Testing a backtrace from irq context.\n");
|
||||
pr_info("The following trace is a kernel self test and not a bug!\n");
|
||||
|
||||
init_completion(&backtrace_work);
|
||||
tasklet_schedule(&backtrace_tasklet);
|
||||
@@ -51,8 +51,8 @@ static void backtrace_test_saved(void)
|
||||
struct stack_trace trace;
|
||||
unsigned long entries[8];
|
||||
|
||||
printk("Testing a saved backtrace.\n");
|
||||
printk("The following trace is a kernel self test and not a bug!\n");
|
||||
pr_info("Testing a saved backtrace.\n");
|
||||
pr_info("The following trace is a kernel self test and not a bug!\n");
|
||||
|
||||
trace.nr_entries = 0;
|
||||
trace.max_entries = ARRAY_SIZE(entries);
|
||||
@@ -65,19 +65,19 @@ static void backtrace_test_saved(void)
|
||||
#else
|
||||
static void backtrace_test_saved(void)
|
||||
{
|
||||
printk("Saved backtrace test skipped.\n");
|
||||
pr_info("Saved backtrace test skipped.\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
static int backtrace_regression_test(void)
|
||||
{
|
||||
printk("====[ backtrace testing ]===========\n");
|
||||
pr_info("====[ backtrace testing ]===========\n");
|
||||
|
||||
backtrace_test_normal();
|
||||
backtrace_test_irq();
|
||||
backtrace_test_saved();
|
||||
|
||||
printk("====[ end of backtrace testing ]====\n");
|
||||
pr_info("====[ end of backtrace testing ]====\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -24,7 +24,6 @@
|
||||
*/
|
||||
|
||||
const kernel_cap_t __cap_empty_set = CAP_EMPTY_SET;
|
||||
|
||||
EXPORT_SYMBOL(__cap_empty_set);
|
||||
|
||||
int file_caps_enabled = 1;
|
||||
@@ -189,7 +188,7 @@ SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr)
|
||||
*
|
||||
* An alternative would be to return an error here
|
||||
* (-ERANGE), but that causes legacy applications to
|
||||
* unexpectidly fail; the capget/modify/capset aborts
|
||||
* unexpectedly fail; the capget/modify/capset aborts
|
||||
* before modification is attempted and the application
|
||||
* fails.
|
||||
*/
|
||||
@@ -395,7 +394,8 @@ EXPORT_SYMBOL(ns_capable);
|
||||
* This does not set PF_SUPERPRIV because the caller may not
|
||||
* actually be privileged.
|
||||
*/
|
||||
bool file_ns_capable(const struct file *file, struct user_namespace *ns, int cap)
|
||||
bool file_ns_capable(const struct file *file, struct user_namespace *ns,
|
||||
int cap)
|
||||
{
|
||||
if (WARN_ON_ONCE(!cap_valid(cap)))
|
||||
return false;
|
||||
|
||||
+4
-4
@@ -157,7 +157,7 @@ static int __compat_put_timespec(const struct timespec *ts, struct compat_timesp
|
||||
int compat_get_timeval(struct timeval *tv, const void __user *utv)
|
||||
{
|
||||
if (COMPAT_USE_64BIT_TIME)
|
||||
return copy_from_user(tv, utv, sizeof *tv) ? -EFAULT : 0;
|
||||
return copy_from_user(tv, utv, sizeof(*tv)) ? -EFAULT : 0;
|
||||
else
|
||||
return __compat_get_timeval(tv, utv);
|
||||
}
|
||||
@@ -166,7 +166,7 @@ EXPORT_SYMBOL_GPL(compat_get_timeval);
|
||||
int compat_put_timeval(const struct timeval *tv, void __user *utv)
|
||||
{
|
||||
if (COMPAT_USE_64BIT_TIME)
|
||||
return copy_to_user(utv, tv, sizeof *tv) ? -EFAULT : 0;
|
||||
return copy_to_user(utv, tv, sizeof(*tv)) ? -EFAULT : 0;
|
||||
else
|
||||
return __compat_put_timeval(tv, utv);
|
||||
}
|
||||
@@ -175,7 +175,7 @@ EXPORT_SYMBOL_GPL(compat_put_timeval);
|
||||
int compat_get_timespec(struct timespec *ts, const void __user *uts)
|
||||
{
|
||||
if (COMPAT_USE_64BIT_TIME)
|
||||
return copy_from_user(ts, uts, sizeof *ts) ? -EFAULT : 0;
|
||||
return copy_from_user(ts, uts, sizeof(*ts)) ? -EFAULT : 0;
|
||||
else
|
||||
return __compat_get_timespec(ts, uts);
|
||||
}
|
||||
@@ -184,7 +184,7 @@ EXPORT_SYMBOL_GPL(compat_get_timespec);
|
||||
int compat_put_timespec(const struct timespec *ts, void __user *uts)
|
||||
{
|
||||
if (COMPAT_USE_64BIT_TIME)
|
||||
return copy_to_user(uts, ts, sizeof *ts) ? -EFAULT : 0;
|
||||
return copy_to_user(uts, ts, sizeof(*ts)) ? -EFAULT : 0;
|
||||
else
|
||||
return __compat_put_timespec(ts, uts);
|
||||
}
|
||||
|
||||
+14
-17
@@ -283,8 +283,7 @@ static inline void check_for_tasks(int cpu)
|
||||
task_cputime(p, &utime, &stime);
|
||||
if (task_cpu(p) == cpu && p->state == TASK_RUNNING &&
|
||||
(utime || stime))
|
||||
printk(KERN_WARNING "Task %s (pid = %d) is on cpu %d "
|
||||
"(state = %ld, flags = %x)\n",
|
||||
pr_warn("Task %s (pid = %d) is on cpu %d (state = %ld, flags = %x)\n",
|
||||
p->comm, task_pid_nr(p), cpu,
|
||||
p->state, p->flags);
|
||||
}
|
||||
@@ -336,8 +335,8 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
|
||||
if (err) {
|
||||
nr_calls--;
|
||||
__cpu_notify(CPU_DOWN_FAILED | mod, hcpu, nr_calls, NULL);
|
||||
printk("%s: attempt to take down CPU %u failed\n",
|
||||
__func__, cpu);
|
||||
pr_warn("%s: attempt to take down CPU %u failed\n",
|
||||
__func__, cpu);
|
||||
goto out_release;
|
||||
}
|
||||
|
||||
@@ -444,8 +443,8 @@ static int _cpu_up(unsigned int cpu, int tasks_frozen)
|
||||
ret = __cpu_notify(CPU_UP_PREPARE | mod, hcpu, -1, &nr_calls);
|
||||
if (ret) {
|
||||
nr_calls--;
|
||||
printk(KERN_WARNING "%s: attempt to bring up CPU %u failed\n",
|
||||
__func__, cpu);
|
||||
pr_warn("%s: attempt to bring up CPU %u failed\n",
|
||||
__func__, cpu);
|
||||
goto out_notify;
|
||||
}
|
||||
|
||||
@@ -475,11 +474,10 @@ int cpu_up(unsigned int cpu)
|
||||
int err = 0;
|
||||
|
||||
if (!cpu_possible(cpu)) {
|
||||
printk(KERN_ERR "can't online cpu %d because it is not "
|
||||
"configured as may-hotadd at boot time\n", cpu);
|
||||
pr_err("can't online cpu %d because it is not configured as may-hotadd at boot time\n",
|
||||
cpu);
|
||||
#if defined(CONFIG_IA64)
|
||||
printk(KERN_ERR "please check additional_cpus= boot "
|
||||
"parameter\n");
|
||||
pr_err("please check additional_cpus= boot parameter\n");
|
||||
#endif
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -518,7 +516,7 @@ int disable_nonboot_cpus(void)
|
||||
*/
|
||||
cpumask_clear(frozen_cpus);
|
||||
|
||||
printk("Disabling non-boot CPUs ...\n");
|
||||
pr_info("Disabling non-boot CPUs ...\n");
|
||||
for_each_online_cpu(cpu) {
|
||||
if (cpu == first_cpu)
|
||||
continue;
|
||||
@@ -526,8 +524,7 @@ int disable_nonboot_cpus(void)
|
||||
if (!error)
|
||||
cpumask_set_cpu(cpu, frozen_cpus);
|
||||
else {
|
||||
printk(KERN_ERR "Error taking CPU%d down: %d\n",
|
||||
cpu, error);
|
||||
pr_err("Error taking CPU%d down: %d\n", cpu, error);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -537,7 +534,7 @@ int disable_nonboot_cpus(void)
|
||||
/* Make sure the CPUs won't be enabled by someone else */
|
||||
cpu_hotplug_disabled = 1;
|
||||
} else {
|
||||
printk(KERN_ERR "Non-boot CPUs are not disabled\n");
|
||||
pr_err("Non-boot CPUs are not disabled\n");
|
||||
}
|
||||
cpu_maps_update_done();
|
||||
return error;
|
||||
@@ -561,17 +558,17 @@ void __ref enable_nonboot_cpus(void)
|
||||
if (cpumask_empty(frozen_cpus))
|
||||
goto out;
|
||||
|
||||
printk(KERN_INFO "Enabling non-boot CPUs ...\n");
|
||||
pr_info("Enabling non-boot CPUs ...\n");
|
||||
|
||||
arch_enable_nonboot_cpus_begin();
|
||||
|
||||
for_each_cpu(cpu, frozen_cpus) {
|
||||
error = _cpu_up(cpu, 1);
|
||||
if (!error) {
|
||||
printk(KERN_INFO "CPU%d is up\n", cpu);
|
||||
pr_info("CPU%d is up\n", cpu);
|
||||
continue;
|
||||
}
|
||||
printk(KERN_WARNING "Error taking CPU%d up: %d\n", cpu, error);
|
||||
pr_warn("Error taking CPU%d up: %d\n", cpu, error);
|
||||
}
|
||||
|
||||
arch_enable_nonboot_cpus_end();
|
||||
|
||||
+4
-10
@@ -61,12 +61,7 @@
|
||||
#include <linux/cgroup.h>
|
||||
#include <linux/wait.h>
|
||||
|
||||
/*
|
||||
* Tracks how many cpusets are currently defined in system.
|
||||
* When there is only one cpuset (the root cpuset) we can
|
||||
* short circuit some hooks.
|
||||
*/
|
||||
int number_of_cpusets __read_mostly;
|
||||
struct static_key cpusets_enabled_key __read_mostly = STATIC_KEY_INIT_FALSE;
|
||||
|
||||
/* See "Frequency meter" comments, below. */
|
||||
|
||||
@@ -611,7 +606,7 @@ static int generate_sched_domains(cpumask_var_t **domains,
|
||||
goto done;
|
||||
}
|
||||
|
||||
csa = kmalloc(number_of_cpusets * sizeof(cp), GFP_KERNEL);
|
||||
csa = kmalloc(nr_cpusets() * sizeof(cp), GFP_KERNEL);
|
||||
if (!csa)
|
||||
goto done;
|
||||
csn = 0;
|
||||
@@ -1888,7 +1883,7 @@ static int cpuset_css_online(struct cgroup_subsys_state *css)
|
||||
if (is_spread_slab(parent))
|
||||
set_bit(CS_SPREAD_SLAB, &cs->flags);
|
||||
|
||||
number_of_cpusets++;
|
||||
cpuset_inc();
|
||||
|
||||
if (!test_bit(CGRP_CPUSET_CLONE_CHILDREN, &css->cgroup->flags))
|
||||
goto out_unlock;
|
||||
@@ -1939,7 +1934,7 @@ static void cpuset_css_offline(struct cgroup_subsys_state *css)
|
||||
if (is_sched_load_balance(cs))
|
||||
update_flag(CS_SCHED_LOAD_BALANCE, cs, 0);
|
||||
|
||||
number_of_cpusets--;
|
||||
cpuset_dec();
|
||||
clear_bit(CS_ONLINE, &cs->flags);
|
||||
|
||||
mutex_unlock(&cpuset_mutex);
|
||||
@@ -1992,7 +1987,6 @@ int __init cpuset_init(void)
|
||||
if (!alloc_cpumask_var(&cpus_attach, GFP_KERNEL))
|
||||
BUG();
|
||||
|
||||
number_of_cpusets = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
static void kdb_show_stack(struct task_struct *p, void *addr)
|
||||
{
|
||||
int old_lvl = console_loglevel;
|
||||
console_loglevel = 15;
|
||||
console_loglevel = CONSOLE_LOGLEVEL_MOTORMOUTH;
|
||||
kdb_trap_printk++;
|
||||
kdb_set_current_task(p);
|
||||
if (addr) {
|
||||
|
||||
@@ -710,7 +710,7 @@ kdb_printit:
|
||||
}
|
||||
if (logging) {
|
||||
saved_loglevel = console_loglevel;
|
||||
console_loglevel = 0;
|
||||
console_loglevel = CONSOLE_LOGLEVEL_SILENT;
|
||||
printk(KERN_INFO "%s", kdb_buffer);
|
||||
}
|
||||
|
||||
|
||||
@@ -1091,7 +1091,7 @@ static int kdb_reboot(int argc, const char **argv)
|
||||
static void kdb_dumpregs(struct pt_regs *regs)
|
||||
{
|
||||
int old_lvl = console_loglevel;
|
||||
console_loglevel = 15;
|
||||
console_loglevel = CONSOLE_LOGLEVEL_MOTORMOUTH;
|
||||
kdb_trap_printk++;
|
||||
show_regs(regs);
|
||||
kdb_trap_printk--;
|
||||
|
||||
@@ -37,7 +37,7 @@ static unsigned long ident_map[32] = {
|
||||
struct exec_domain default_exec_domain = {
|
||||
.name = "Linux", /* name */
|
||||
.handler = default_handler, /* lcall7 causes a seg fault. */
|
||||
.pers_low = 0, /* PER_LINUX personality. */
|
||||
.pers_low = 0, /* PER_LINUX personality. */
|
||||
.pers_high = 0, /* PER_LINUX personality. */
|
||||
.signal_map = ident_map, /* Identity map signals. */
|
||||
.signal_invmap = ident_map, /* - both ways. */
|
||||
@@ -83,7 +83,7 @@ lookup_exec_domain(unsigned int personality)
|
||||
ep = &default_exec_domain;
|
||||
out:
|
||||
read_unlock(&exec_domains_lock);
|
||||
return (ep);
|
||||
return ep;
|
||||
}
|
||||
|
||||
int
|
||||
@@ -110,8 +110,9 @@ register_exec_domain(struct exec_domain *ep)
|
||||
|
||||
out:
|
||||
write_unlock(&exec_domains_lock);
|
||||
return (err);
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(register_exec_domain);
|
||||
|
||||
int
|
||||
unregister_exec_domain(struct exec_domain *ep)
|
||||
@@ -133,6 +134,7 @@ unregister:
|
||||
write_unlock(&exec_domains_lock);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(unregister_exec_domain);
|
||||
|
||||
int __set_personality(unsigned int personality)
|
||||
{
|
||||
@@ -144,6 +146,7 @@ int __set_personality(unsigned int personality)
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(__set_personality);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
static int execdomains_proc_show(struct seq_file *m, void *v)
|
||||
@@ -188,8 +191,3 @@ SYSCALL_DEFINE1(personality, unsigned int, personality)
|
||||
|
||||
return old;
|
||||
}
|
||||
|
||||
|
||||
EXPORT_SYMBOL(register_exec_domain);
|
||||
EXPORT_SYMBOL(unregister_exec_domain);
|
||||
EXPORT_SYMBOL(__set_personality);
|
||||
|
||||
+13
-9
@@ -352,7 +352,7 @@ int disallow_signal(int sig)
|
||||
|
||||
EXPORT_SYMBOL(disallow_signal);
|
||||
|
||||
#ifdef CONFIG_MM_OWNER
|
||||
#ifdef CONFIG_MEMCG
|
||||
/*
|
||||
* A task is exiting. If it owned this mm, find a new owner for the mm.
|
||||
*/
|
||||
@@ -395,14 +395,18 @@ retry:
|
||||
}
|
||||
|
||||
/*
|
||||
* Search through everything else. We should not get
|
||||
* here often
|
||||
* Search through everything else, we should not get here often.
|
||||
*/
|
||||
do_each_thread(g, c) {
|
||||
if (c->mm == mm)
|
||||
goto assign_new_owner;
|
||||
} while_each_thread(g, c);
|
||||
|
||||
for_each_process(g) {
|
||||
if (g->flags & PF_KTHREAD)
|
||||
continue;
|
||||
for_each_thread(g, c) {
|
||||
if (c->mm == mm)
|
||||
goto assign_new_owner;
|
||||
if (c->mm)
|
||||
break;
|
||||
}
|
||||
}
|
||||
read_unlock(&tasklist_lock);
|
||||
/*
|
||||
* We found no owner yet mm_users > 1: this implies that we are
|
||||
@@ -434,7 +438,7 @@ assign_new_owner:
|
||||
task_unlock(c);
|
||||
put_task_struct(c);
|
||||
}
|
||||
#endif /* CONFIG_MM_OWNER */
|
||||
#endif /* CONFIG_MEMCG */
|
||||
|
||||
/*
|
||||
* Turn us into a lazy TLB process if we
|
||||
|
||||
+5
-5
@@ -150,15 +150,15 @@ void __weak arch_release_thread_info(struct thread_info *ti)
|
||||
static struct thread_info *alloc_thread_info_node(struct task_struct *tsk,
|
||||
int node)
|
||||
{
|
||||
struct page *page = alloc_pages_node(node, THREADINFO_GFP_ACCOUNTED,
|
||||
THREAD_SIZE_ORDER);
|
||||
struct page *page = alloc_kmem_pages_node(node, THREADINFO_GFP,
|
||||
THREAD_SIZE_ORDER);
|
||||
|
||||
return page ? page_address(page) : NULL;
|
||||
}
|
||||
|
||||
static inline void free_thread_info(struct thread_info *ti)
|
||||
{
|
||||
free_memcg_kmem_pages((unsigned long)ti, THREAD_SIZE_ORDER);
|
||||
free_kmem_pages((unsigned long)ti, THREAD_SIZE_ORDER);
|
||||
}
|
||||
# else
|
||||
static struct kmem_cache *thread_info_cache;
|
||||
@@ -1099,12 +1099,12 @@ static void rt_mutex_init_task(struct task_struct *p)
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MM_OWNER
|
||||
#ifdef CONFIG_MEMCG
|
||||
void mm_init_owner(struct mm_struct *mm, struct task_struct *p)
|
||||
{
|
||||
mm->owner = p;
|
||||
}
|
||||
#endif /* CONFIG_MM_OWNER */
|
||||
#endif /* CONFIG_MEMCG */
|
||||
|
||||
/*
|
||||
* Initialize POSIX timer handling for a single task.
|
||||
|
||||
+3
-1
@@ -52,8 +52,10 @@ unsigned int __read_mostly sysctl_hung_task_panic =
|
||||
|
||||
static int __init hung_task_panic_setup(char *str)
|
||||
{
|
||||
sysctl_hung_task_panic = simple_strtoul(str, NULL, 0);
|
||||
int rc = kstrtouint(str, 0, &sysctl_hung_task_panic);
|
||||
|
||||
if (rc)
|
||||
return rc;
|
||||
return 1;
|
||||
}
|
||||
__setup("hung_task_panic=", hung_task_panic_setup);
|
||||
|
||||
+2
-2
@@ -262,7 +262,7 @@ static void create_kthread(struct kthread_create_info *create)
|
||||
* kthread_stop() has been called). The return value should be zero
|
||||
* or a negative error number; it will be passed to kthread_stop().
|
||||
*
|
||||
* Returns a task_struct or ERR_PTR(-ENOMEM).
|
||||
* Returns a task_struct or ERR_PTR(-ENOMEM) or ERR_PTR(-EINTR).
|
||||
*/
|
||||
struct task_struct *kthread_create_on_node(int (*threadfn)(void *data),
|
||||
void *data, int node,
|
||||
@@ -298,7 +298,7 @@ struct task_struct *kthread_create_on_node(int (*threadfn)(void *data),
|
||||
* that thread.
|
||||
*/
|
||||
if (xchg(&create->done, NULL))
|
||||
return ERR_PTR(-ENOMEM);
|
||||
return ERR_PTR(-EINTR);
|
||||
/*
|
||||
* kthreadd (or new kernel thread) will call complete()
|
||||
* shortly.
|
||||
|
||||
+3
-2
@@ -88,7 +88,8 @@ static void clear_global_latency_tracing(void)
|
||||
}
|
||||
|
||||
static void __sched
|
||||
account_global_scheduler_latency(struct task_struct *tsk, struct latency_record *lat)
|
||||
account_global_scheduler_latency(struct task_struct *tsk,
|
||||
struct latency_record *lat)
|
||||
{
|
||||
int firstnonnull = MAXLR + 1;
|
||||
int i;
|
||||
@@ -255,7 +256,7 @@ static int lstats_show(struct seq_file *m, void *v)
|
||||
break;
|
||||
seq_printf(m, " %ps", (void *)bt);
|
||||
}
|
||||
seq_printf(m, "\n");
|
||||
seq_puts(m, "\n");
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
+224
-119
File diff suppressed because it is too large
Load Diff
+14
-7
@@ -388,15 +388,22 @@ static int __init reboot_setup(char *str)
|
||||
break;
|
||||
|
||||
case 's':
|
||||
if (isdigit(*(str+1)))
|
||||
reboot_cpu = simple_strtoul(str+1, NULL, 0);
|
||||
else if (str[1] == 'm' && str[2] == 'p' &&
|
||||
isdigit(*(str+3)))
|
||||
reboot_cpu = simple_strtoul(str+3, NULL, 0);
|
||||
else
|
||||
{
|
||||
int rc;
|
||||
|
||||
if (isdigit(*(str+1))) {
|
||||
rc = kstrtoint(str+1, 0, &reboot_cpu);
|
||||
if (rc)
|
||||
return rc;
|
||||
} else if (str[1] == 'm' && str[2] == 'p' &&
|
||||
isdigit(*(str+3))) {
|
||||
rc = kstrtoint(str+3, 0, &reboot_cpu);
|
||||
if (rc)
|
||||
return rc;
|
||||
} else
|
||||
reboot_mode = REBOOT_SOFT;
|
||||
break;
|
||||
|
||||
}
|
||||
case 'g':
|
||||
reboot_mode = REBOOT_GPIO;
|
||||
break;
|
||||
|
||||
@@ -186,8 +186,11 @@ int res_counter_memparse_write_strategy(const char *buf,
|
||||
|
||||
/* return RES_COUNTER_MAX(unlimited) if "-1" is specified */
|
||||
if (*buf == '-') {
|
||||
res = simple_strtoull(buf + 1, &end, 10);
|
||||
if (res != 1 || *end != '\0')
|
||||
int rc = kstrtoull(buf + 1, 10, &res);
|
||||
|
||||
if (rc)
|
||||
return rc;
|
||||
if (res != 1)
|
||||
return -EINVAL;
|
||||
*resp = RES_COUNTER_MAX;
|
||||
return 0;
|
||||
|
||||
+1
-1
@@ -1367,7 +1367,7 @@ out:
|
||||
* leave kernel.
|
||||
*/
|
||||
if (p->mm && printk_ratelimit()) {
|
||||
printk_sched("process %d (%s) no longer affine to cpu%d\n",
|
||||
printk_deferred("process %d (%s) no longer affine to cpu%d\n",
|
||||
task_pid_nr(p), p->comm, cpu);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -348,12 +348,7 @@ static void replenish_dl_entity(struct sched_dl_entity *dl_se,
|
||||
* entity.
|
||||
*/
|
||||
if (dl_time_before(dl_se->deadline, rq_clock(rq))) {
|
||||
static bool lag_once = false;
|
||||
|
||||
if (!lag_once) {
|
||||
lag_once = true;
|
||||
printk_sched("sched: DL replenish lagged to much\n");
|
||||
}
|
||||
printk_deferred_once("sched: DL replenish lagged to much\n");
|
||||
dl_se->deadline = rq_clock(rq) + pi_se->dl_deadline;
|
||||
dl_se->runtime = pi_se->dl_runtime;
|
||||
}
|
||||
|
||||
+1
-7
@@ -890,14 +890,8 @@ static int sched_rt_runtime_exceeded(struct rt_rq *rt_rq)
|
||||
* but accrue some time due to boosting.
|
||||
*/
|
||||
if (likely(rt_b->rt_runtime)) {
|
||||
static bool once = false;
|
||||
|
||||
rt_rq->rt_throttled = 1;
|
||||
|
||||
if (!once) {
|
||||
once = true;
|
||||
printk_sched("sched: RT throttling activated\n");
|
||||
}
|
||||
printk_deferred_once("sched: RT throttling activated\n");
|
||||
} else {
|
||||
/*
|
||||
* In case we did anyway, make it go away,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user