Merge branch 'akpm' (Andrew's incoming)
Quoth Andrew: - Most of MM. Still waiting for the poweroc guys to get off their butts and review some threaded hugepages patches. - alpha - vfs bits - drivers/misc - a few core kerenl tweaks - printk() features - MAINTAINERS updates - backlight merge - leds merge - various lib/ updates - checkpatch updates * akpm: (127 commits) epoll: fix spurious lockdep warnings checkpatch: add a --strict check for utf-8 in commit logs kernel.h/checkpatch: mark strict_strto<foo> and simple_strto<foo> as obsolete llist-return-whether-list-is-empty-before-adding-in-llist_add-fix wireless: at76c50x: follow rename pack_hex_byte to hex_byte_pack fat: follow rename pack_hex_byte() to hex_byte_pack() security: follow rename pack_hex_byte() to hex_byte_pack() kgdb: follow rename pack_hex_byte() to hex_byte_pack() lib: rename pack_hex_byte() to hex_byte_pack() lib/string.c: fix strim() semantics for strings that have only blanks lib/idr.c: fix comment for ida_get_new_above() lib/percpu_counter.c: enclose hotplug only variables in hotplug ifdef lib/bitmap.c: quiet sparse noise about address space lib/spinlock_debug.c: print owner on spinlock lockup lib/kstrtox: common code between kstrto*() and simple_strto*() functions drivers/leds/leds-lp5521.c: check if reset is successful leds: turn the blink_timer off before starting to blink leds: save the delay values after a successful call to blink_set() drivers/leds/leds-gpio.c: use gpio_get_value_cansleep() when initializing drivers/leds/leds-lm3530.c: add __devexit_p where needed ...
This commit is contained in:
@@ -217,7 +217,7 @@ void gdbstub_msg_write(const char *s, int len)
|
||||
|
||||
/* Pack in hex chars */
|
||||
for (i = 0; i < wcount; i++)
|
||||
bufptr = pack_hex_byte(bufptr, s[i]);
|
||||
bufptr = hex_byte_pack(bufptr, s[i]);
|
||||
*bufptr = '\0';
|
||||
|
||||
/* Move up */
|
||||
@@ -249,7 +249,7 @@ char *kgdb_mem2hex(char *mem, char *buf, int count)
|
||||
if (err)
|
||||
return NULL;
|
||||
while (count > 0) {
|
||||
buf = pack_hex_byte(buf, *tmp);
|
||||
buf = hex_byte_pack(buf, *tmp);
|
||||
tmp++;
|
||||
count--;
|
||||
}
|
||||
@@ -411,14 +411,14 @@ static char *pack_threadid(char *pkt, unsigned char *id)
|
||||
limit = id + (BUF_THREAD_ID_SIZE / 2);
|
||||
while (id < limit) {
|
||||
if (!lzero || *id != 0) {
|
||||
pkt = pack_hex_byte(pkt, *id);
|
||||
pkt = hex_byte_pack(pkt, *id);
|
||||
lzero = 0;
|
||||
}
|
||||
id++;
|
||||
}
|
||||
|
||||
if (lzero)
|
||||
pkt = pack_hex_byte(pkt, 0);
|
||||
pkt = hex_byte_pack(pkt, 0);
|
||||
|
||||
return pkt;
|
||||
}
|
||||
@@ -486,7 +486,7 @@ static void gdb_cmd_status(struct kgdb_state *ks)
|
||||
dbg_remove_all_break();
|
||||
|
||||
remcom_out_buffer[0] = 'S';
|
||||
pack_hex_byte(&remcom_out_buffer[1], ks->signo);
|
||||
hex_byte_pack(&remcom_out_buffer[1], ks->signo);
|
||||
}
|
||||
|
||||
static void gdb_get_regs_helper(struct kgdb_state *ks)
|
||||
@@ -954,7 +954,7 @@ int gdb_serial_stub(struct kgdb_state *ks)
|
||||
/* Reply to host that an exception has occurred */
|
||||
ptr = remcom_out_buffer;
|
||||
*ptr++ = 'T';
|
||||
ptr = pack_hex_byte(ptr, ks->signo);
|
||||
ptr = hex_byte_pack(ptr, ks->signo);
|
||||
ptr += strlen(strcpy(ptr, "thread:"));
|
||||
int_to_threadref(thref, shadow_pid(current->pid));
|
||||
ptr = pack_threadid(ptr, thref);
|
||||
|
@@ -3544,7 +3544,7 @@ static void perf_mmap_close(struct vm_area_struct *vma)
|
||||
struct ring_buffer *rb = event->rb;
|
||||
|
||||
atomic_long_sub((size >> PAGE_SHIFT) + 1, &user->locked_vm);
|
||||
vma->vm_mm->locked_vm -= event->mmap_locked;
|
||||
vma->vm_mm->pinned_vm -= event->mmap_locked;
|
||||
rcu_assign_pointer(event->rb, NULL);
|
||||
mutex_unlock(&event->mmap_mutex);
|
||||
|
||||
@@ -3625,7 +3625,7 @@ static int perf_mmap(struct file *file, struct vm_area_struct *vma)
|
||||
|
||||
lock_limit = rlimit(RLIMIT_MEMLOCK);
|
||||
lock_limit >>= PAGE_SHIFT;
|
||||
locked = vma->vm_mm->locked_vm + extra;
|
||||
locked = vma->vm_mm->pinned_vm + extra;
|
||||
|
||||
if ((locked > lock_limit) && perf_paranoid_tracepoint_raw() &&
|
||||
!capable(CAP_IPC_LOCK)) {
|
||||
@@ -3651,7 +3651,7 @@ static int perf_mmap(struct file *file, struct vm_area_struct *vma)
|
||||
atomic_long_add(user_extra, &user->locked_vm);
|
||||
event->mmap_locked = extra;
|
||||
event->mmap_user = get_current_user();
|
||||
vma->vm_mm->locked_vm += event->mmap_locked;
|
||||
vma->vm_mm->pinned_vm += event->mmap_locked;
|
||||
|
||||
unlock:
|
||||
if (!ret)
|
||||
|
@@ -681,8 +681,6 @@ static void exit_mm(struct task_struct * tsk)
|
||||
enter_lazy_tlb(mm, current);
|
||||
/* We don't want this task to be frozen prematurely */
|
||||
clear_freeze_flag(tsk);
|
||||
if (tsk->signal->oom_score_adj == OOM_SCORE_ADJ_MIN)
|
||||
atomic_dec(&mm->oom_disable_count);
|
||||
task_unlock(tsk);
|
||||
mm_update_next_owner(mm);
|
||||
mmput(mm);
|
||||
|
@@ -501,7 +501,6 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p)
|
||||
mm->cached_hole_size = ~0UL;
|
||||
mm_init_aio(mm);
|
||||
mm_init_owner(mm, p);
|
||||
atomic_set(&mm->oom_disable_count, 0);
|
||||
|
||||
if (likely(!mm_alloc_pgd(mm))) {
|
||||
mm->def_flags = 0;
|
||||
@@ -816,8 +815,6 @@ good_mm:
|
||||
/* Initializing for Swap token stuff */
|
||||
mm->token_priority = 0;
|
||||
mm->last_interval = 0;
|
||||
if (tsk->signal->oom_score_adj == OOM_SCORE_ADJ_MIN)
|
||||
atomic_inc(&mm->oom_disable_count);
|
||||
|
||||
tsk->mm = mm;
|
||||
tsk->active_mm = mm;
|
||||
@@ -1391,13 +1388,8 @@ bad_fork_cleanup_io:
|
||||
bad_fork_cleanup_namespaces:
|
||||
exit_task_namespaces(p);
|
||||
bad_fork_cleanup_mm:
|
||||
if (p->mm) {
|
||||
task_lock(p);
|
||||
if (p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN)
|
||||
atomic_dec(&p->mm->oom_disable_count);
|
||||
task_unlock(p);
|
||||
if (p->mm)
|
||||
mmput(p->mm);
|
||||
}
|
||||
bad_fork_cleanup_signal:
|
||||
if (!(clone_flags & CLONE_THREAD))
|
||||
free_signal_struct(p->signal);
|
||||
|
@@ -532,6 +532,9 @@ static int __init ignore_loglevel_setup(char *str)
|
||||
}
|
||||
|
||||
early_param("ignore_loglevel", ignore_loglevel_setup);
|
||||
module_param_named(ignore_loglevel, ignore_loglevel, bool, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(ignore_loglevel, "ignore loglevel setting, to"
|
||||
"print all kernel messages to the console.");
|
||||
|
||||
/*
|
||||
* Write out chars from start to end - 1 inclusive
|
||||
@@ -592,9 +595,6 @@ static size_t log_prefix(const char *p, unsigned int *level, char *special)
|
||||
/* multi digit including the level and facility number */
|
||||
char *endp = NULL;
|
||||
|
||||
if (p[1] < '0' && p[1] > '9')
|
||||
return 0;
|
||||
|
||||
lev = (simple_strtoul(&p[1], &endp, 10) & 7);
|
||||
if (endp == NULL || endp[0] != '>')
|
||||
return 0;
|
||||
@@ -1108,6 +1108,10 @@ static int __init console_suspend_disable(char *str)
|
||||
return 1;
|
||||
}
|
||||
__setup("no_console_suspend", console_suspend_disable);
|
||||
module_param_named(console_suspend, console_suspend_enabled,
|
||||
bool, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC(console_suspend, "suspend console during suspend"
|
||||
" and hibernate operations");
|
||||
|
||||
/**
|
||||
* suspend_console - suspend the console subsystem
|
||||
|
@@ -41,6 +41,7 @@ struct cpu_stopper {
|
||||
};
|
||||
|
||||
static DEFINE_PER_CPU(struct cpu_stopper, cpu_stopper);
|
||||
static bool stop_machine_initialized = false;
|
||||
|
||||
static void cpu_stop_init_done(struct cpu_stop_done *done, unsigned int nr_todo)
|
||||
{
|
||||
@@ -386,6 +387,8 @@ static int __init cpu_stop_init(void)
|
||||
cpu_stop_cpu_callback(&cpu_stop_cpu_notifier, CPU_ONLINE, bcpu);
|
||||
register_cpu_notifier(&cpu_stop_cpu_notifier);
|
||||
|
||||
stop_machine_initialized = true;
|
||||
|
||||
return 0;
|
||||
}
|
||||
early_initcall(cpu_stop_init);
|
||||
@@ -485,6 +488,25 @@ int __stop_machine(int (*fn)(void *), void *data, const struct cpumask *cpus)
|
||||
.num_threads = num_online_cpus(),
|
||||
.active_cpus = cpus };
|
||||
|
||||
if (!stop_machine_initialized) {
|
||||
/*
|
||||
* Handle the case where stop_machine() is called
|
||||
* early in boot before stop_machine() has been
|
||||
* initialized.
|
||||
*/
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
|
||||
WARN_ON_ONCE(smdata.num_threads != 1);
|
||||
|
||||
local_irq_save(flags);
|
||||
hard_irq_disable();
|
||||
ret = (*fn)(data);
|
||||
local_irq_restore(flags);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Set the initial state and stop all online cpus. */
|
||||
set_state(&smdata, STOPMACHINE_PREPARE);
|
||||
return stop_cpus(cpu_online_mask, stop_machine_cpu_stop, &smdata);
|
||||
|
@@ -145,6 +145,10 @@ cond_syscall(sys_io_submit);
|
||||
cond_syscall(sys_io_cancel);
|
||||
cond_syscall(sys_io_getevents);
|
||||
cond_syscall(sys_syslog);
|
||||
cond_syscall(sys_process_vm_readv);
|
||||
cond_syscall(sys_process_vm_writev);
|
||||
cond_syscall(compat_sys_process_vm_readv);
|
||||
cond_syscall(compat_sys_process_vm_writev);
|
||||
|
||||
/* arch-specific weak syscall entries */
|
||||
cond_syscall(sys_pciconfig_read);
|
||||
|
@@ -57,6 +57,7 @@
|
||||
#include <linux/pipe_fs_i.h>
|
||||
#include <linux/oom.h>
|
||||
#include <linux/kmod.h>
|
||||
#include <linux/capability.h>
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/processor.h>
|
||||
@@ -134,6 +135,7 @@ static int minolduid;
|
||||
static int min_percpu_pagelist_fract = 8;
|
||||
|
||||
static int ngroups_max = NGROUPS_MAX;
|
||||
static const int cap_last_cap = CAP_LAST_CAP;
|
||||
|
||||
#ifdef CONFIG_INOTIFY_USER
|
||||
#include <linux/inotify.h>
|
||||
@@ -732,6 +734,13 @@ static struct ctl_table kern_table[] = {
|
||||
.mode = 0444,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
.procname = "cap_last_cap",
|
||||
.data = (void *)&cap_last_cap,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0444,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
#if defined(CONFIG_LOCKUP_DETECTOR)
|
||||
{
|
||||
.procname = "watchdog",
|
||||
|
@@ -481,6 +481,8 @@ static void watchdog_disable(int cpu)
|
||||
}
|
||||
}
|
||||
|
||||
/* sysctl functions */
|
||||
#ifdef CONFIG_SYSCTL
|
||||
static void watchdog_enable_all_cpus(void)
|
||||
{
|
||||
int cpu;
|
||||
@@ -510,8 +512,6 @@ static void watchdog_disable_all_cpus(void)
|
||||
}
|
||||
|
||||
|
||||
/* sysctl functions */
|
||||
#ifdef CONFIG_SYSCTL
|
||||
/*
|
||||
* proc handler for /proc/sys/kernel/nmi_watchdog,watchdog_thresh
|
||||
*/
|
||||
|
Reference in New Issue
Block a user