Linus Torvalds
d4b2d0061d
Merge branch 'for-3.19-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
...
Pull workqueue fix from Tejun Heo:
"The xfs folks have been running into weird and very rare lockups for
some time now. I didn't think this could have been from workqueue
side because no one else was reporting it. This time, Eric had a
kdump which we looked into and it turned out this actually was a
workqueue bug and the bug has been there since the beginning of
concurrency managed workqueue.
A worker pool ensures forward progress of the workqueues associated
with it by always having at least one worker reserved from executing
work items. When the pool is under contention, the idle one tries to
create more workers for the pool and if that doesn't succeed quickly
enough, it calls the rescuers to the pool.
This logic had a subtle race condition in an early exit path. When a
worker invokes this manager function, the function may return %false
indicating that the caller may proceed to executing work items either
because another worker is already performing the role or conditions
have changed and the pool is no longer under contention.
The latter part depended on the assumption that whether more workers
are necessary or not remains stable while the pool is locked; however,
pool->nr_running (concurrency count) may change asynchronously and it
getting bumped from zero asynchronously could send off the last idle
worker to execute work items.
The race window is fairly narrow, and, even when it gets triggered,
the pool deadlocks iff if all work items get blocked on pending work
items of the pool, which is highly unlikely but can be triggered by
xfs.
The patch removes the race window by removing the early exit path,
which doesn't server any purpose anymore anyway"
* 'for-3.19-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
workqueue: fix subtle pool management issue which can stall whole worker_pool
2015-01-21 07:51:46 +12:00
..
bpf
bpf: verifier: add checks for BPF_ABS | BPF_IND instructions
2014-12-05 21:47:32 -08:00
configs
x86: Add "make tinyconfig" to configure the tiniest possible kernel
2014-08-08 16:30:24 -07:00
debug
kernel/debug/debug_core.c: Logging clean-up
2014-11-11 09:31:53 -06:00
events
perf: Move task_pt_regs sampling into arch code
2015-01-09 11:12:28 +01:00
gcov
gcov: enable GCOV_PROFILE_ALL from ARCH Kconfigs
2014-12-13 12:42:51 -08:00
irq
genirq: Prevent proc race against freeing of irq descriptors
2014-12-13 13:33:07 +01:00
locking
mutex: Always clear owner field upon mutex_unlock()
2015-01-09 11:20:39 +01:00
power
PM: Eliminate CONFIG_PM_RUNTIME
2014-12-19 22:55:06 +01:00
printk
This code is a fork from the trace-3.19 pull as it needed the trace_seq
2014-12-13 14:04:41 -08:00
rcu
Merge branches 'torture.2014.11.03a', 'cpu.2014.11.03a', 'doc.2014.11.13a', 'fixes.2014.11.13a', 'signal.2014.10.29a' and 'rt.2014.10.29a' into HEAD
2014-11-13 10:39:04 -08:00
sched
sched/fair: Fix RCU stall upon -ENOMEM in sched_create_group()
2015-01-09 11:19:00 +01:00
time
Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-12-19 13:29:20 -08:00
trace
This holds a few fixes to the ftrace infrastructure as well as
2015-01-17 07:55:52 +13:00
.gitignore
acct.c
acct: eliminate compile warning
2014-10-09 22:26:04 -04:00
async.c
kernel/async.c: switch to pr_foo()
2014-10-09 22:26:04 -04:00
audit.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2014-12-30 10:45:47 -08:00
audit.h
audit: reduce scope of audit_log_fcaps
2014-09-23 16:37:51 -04:00
audit_tree.c
fsnotify: unify inode and mount marks handling
2014-12-13 12:42:53 -08:00
audit_watch.c
audit: invalid op= values for rules
2014-09-23 16:37:53 -04:00
auditfilter.c
Merge branch 'upstream' of git://git.infradead.org/users/pcmoore/audit
2014-12-23 18:13:16 -08:00
auditsc.c
Merge branch 'upstream' of git://git.infradead.org/users/pcmoore/audit
2014-12-31 14:52:18 -08:00
backtracetest.c
kernel/backtracetest.c: replace no level printk by pr_info()
2014-06-04 16:54:14 -07:00
bounds.c
page-cgroup: get rid of NR_PCG_FLAGS
2014-08-08 15:57:18 -07:00
capability.c
CAPABILITIES: remove undefined caps from all processes
2014-07-24 21:53:47 +10:00
cgroup.c
cgroup: implement cgroup_get_e_css()
2014-11-18 02:49:52 -05:00
cgroup_freezer.c
cgroup: rename cgroup_subsys->base_cftypes to ->legacy_cftypes
2014-07-15 11:05:09 -04:00
compat.c
compat: nanosleep: Clarify error handling
2014-09-06 12:58:18 +02:00
configs.c
context_tracking.c
sched: stop the unbound recursion in preempt_schedule_context()
2014-10-28 10:46:05 +01:00
cpu.c
cpu: Avoid puts_pending overflow
2014-11-03 19:21:01 -08:00
cpu_pm.c
cpuset.c
Merge branch 'for-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
2014-12-11 18:57:19 -08:00
crash_dump.c
crash_dump: Make is_kdump_kernel() accessible from modules
2014-08-25 15:42:19 -07:00
cred.c
delayacct.c
delayacct: Remove braindamaged type conversions
2014-07-23 10:18:06 -07:00
dma.c
elfcore.c
exec_domain.c
kernel/exec_domain.c: code clean-up
2014-06-04 16:54:15 -07:00
exit.c
exit: fix race between wait_consider_task() and wait_task_zombie()
2015-01-08 15:10:51 -08:00
extable.c
ftrace/x86/extable: Add is_ftrace_trampoline() function
2014-11-19 15:25:26 -05:00
fork.c
mm: use new helper functions around the i_mmap_mutex
2014-12-13 12:42:45 -08:00
freezer.c
freezer: remove obsolete comments in __thaw_task()
2014-10-21 23:44:20 +02:00
futex.c
futex: Fix a race condition between REQUEUE_PI and task death
2014-10-26 16:16:18 +01:00
futex_compat.c
groups.c
userns: Don't allow setgroups until a gid mapping has been setablished
2014-12-09 16:58:40 -06:00
hung_task.c
kernel/hung_task.c: convert simple_strtoul to kstrtouint
2014-06-04 16:54:15 -07:00
irq_work.c
percpu: Convert remaining __get_cpu_var uses in 3.18-rcX
2014-10-29 11:18:18 -04:00
jump_label.c
kallsyms.c
kernel/kallsyms.c: use __seq_open_private()
2014-10-14 02:18:16 +02:00
kcmp.c
kcmp: fix standard comparison bug
2014-09-10 15:42:12 -07:00
Kconfig.freezer
Kconfig.hz
Kconfig.locks
locking/rwsem: Add CONFIG_RWSEM_SPIN_ON_OWNER
2014-07-16 14:57:13 +02:00
Kconfig.preempt
kexec.c
kexec: remove unnecessary KERN_ERR from kexec.c
2014-12-13 12:42:51 -08:00
kmod.c
usermodehelper: kill the kmod_thread_locker logic
2014-12-10 17:41:17 -08:00
kprobes.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
2014-12-11 17:30:55 -08:00
ksysfs.c
kobject: Make support for uevent_helper optional.
2014-04-25 12:00:49 -07:00
kthread.c
kernel/kthread.c: partial revert of 81c98869fa ("kthread: ensure locality of task_struct allocations")
2014-10-09 22:25:51 -04:00
latencytop.c
kernel/latencytop.c: convert seq_printf to seq_puts
2014-06-04 16:54:15 -07:00
Makefile
kernel: res_counter: remove the unused API
2014-12-10 17:41:04 -08:00
module-internal.h
module.c
The exciting thing here is the getting rid of stop_machine on module
2014-12-18 20:55:41 -08:00
module_signing.c
notifier.c
kprobes, notifier: Use NOKPROBE_SYMBOL macro in notifier
2014-04-24 10:26:39 +02:00
nsproxy.c
bury struct proc_ns in fs/proc
2014-12-04 14:34:54 -05:00
padata.c
panic.c
kernel: add panic_on_warn
2014-12-10 17:41:10 -08:00
params.c
param: do not set store func without write perm
2014-12-18 12:38:51 +10:30
pid.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2014-12-16 15:53:03 -08:00
pid_namespace.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2014-12-16 15:53:03 -08:00
profile.c
kernel/profile.c: use static const char instead of static char
2014-06-06 16:08:13 -07:00
ptrace.c
exit: ptrace: shift "reap dead" code from exit_ptrace() to forget_original_parent()
2014-12-10 17:41:10 -08:00
range.c
kernel: avoid overflow in cmp_range
2015-01-17 10:02:23 +13:00
reboot.c
kernel: add support for kernel restart handler call chain
2014-09-26 00:00:06 -07:00
relay.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2014-04-12 14:49:50 -07:00
resource.c
x86: optimize resource lookups for ioremap
2014-10-14 02:18:22 +02:00
seccomp.c
Merge branch 'x86-seccomp-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-10-14 02:27:06 +02:00
signal.c
Merge branch 'x86-mpx-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-12-10 09:34:43 -08:00
smp.c
Merge branch 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2014-10-15 07:48:18 +02:00
smpboot.c
sched, smp: Correctly deal with nested sleeps
2014-10-28 10:56:24 +01:00
smpboot.h
softirq.c
rcu: Remove "cpu" argument to rcu_note_context_switch()
2014-11-03 19:20:34 -08:00
stacktrace.c
stacktrace: introduce snprint_stack_trace for buffer output
2014-12-13 12:42:48 -08:00
stop_machine.c
kernel/stop_machine.c: kernel-doc warning fix
2014-06-04 16:54:15 -07:00
sys.c
x86, mpx: On-demand kernel allocation of bounds tables
2014-11-18 00:58:53 +01:00
sys_ni.c
syscalls: implement execveat() system call
2014-12-13 12:42:51 -08:00
sysctl.c
As the merge window is still open, and this code was not as complex
2014-12-16 12:53:59 -08:00
sysctl_binary.c
kernel: add panic_on_warn
2014-12-10 17:41:10 -08:00
system_certificates.S
system_keyring.c
KEYS: validate certificate trust only with builtin keys
2014-07-17 09:35:17 -04:00
task_work.c
taskstats.c
kill f_dentry uses
2014-11-19 13:01:25 -05:00
test_kprobes.c
kernel/test_kprobes.c: use current logging functions
2014-08-08 15:57:18 -07:00
torture.c
torture: Address race in module cleanup
2014-09-16 13:41:06 -07:00
tracepoint.c
tracing: syscall_regfunc() should not skip kernel threads
2014-06-21 00:15:26 -04:00
tsacct.c
sched: Make task->start_time nanoseconds based
2014-07-23 10:18:05 -07:00
uid16.c
groups: Consolidate the setgroups permission checks
2014-12-05 17:19:27 -06:00
up.c
user-return-notifier.c
scheduler: Replace __get_cpu_var with this_cpu_ptr
2014-08-26 13:45:45 -04:00
user.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2014-12-17 12:31:40 -08:00
user_namespace.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace
2014-12-17 12:31:40 -08:00
utsname.c
copy address of proc_ns_ops into ns_common
2014-12-04 14:34:47 -05:00
utsname_sysctl.c
sysctl: convert use of typedef ctl_table to struct ctl_table
2014-06-06 16:08:16 -07:00
watchdog.c
Merge branch 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2014-10-15 07:48:18 +02:00
workqueue.c
workqueue: fix subtle pool management issue which can stall whole worker_pool
2015-01-16 14:21:16 -05:00
workqueue_internal.h
workqueue: rename manager_mutex to attach_mutex
2014-05-20 10:59:32 -04:00