kernel-ark/kernel
Thomas Gleixner c5780e976e [PATCH] Use the correct restart option for futex_lock_pi
The current implementation of futex_lock_pi returns -ERESTART_RESTARTBLOCK
in case that the lock operation has been interrupted by a signal.  This
results in a return of -EINTR to userspace in case there is an handler for
the signal.  This is wrong, because userspace expects that the lock
function does not return in any case of signal delivery.

This was not caught by my insufficient test case, but triggered a nasty
userspace problem in an high load application scenario.  Unfortunately also
glibc does not check for this invalid return value.

Using -ERSTARTNOINTR makes sure, that the interrupted syscall is restarted.
 The restart block related code can be safely removed, as the possible
timeout argument is an absolute time value.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-08 10:22:50 -07:00
..
irq [PATCH] kerneldoc for handle_bad_irq() 2006-09-01 11:39:09 -07:00
power [PATCH] prevent swsusp with PAE 2006-09-06 11:00:02 -07:00
time
.gitignore
acct.c
audit.c [PATCH] fix oops with CONFIG_AUDIT and !CONFIG_AUDITSYSCALL 2006-08-03 10:50:39 -04:00
audit.h
auditfilter.c [PATCH] introduce audit rules counter 2006-08-03 10:55:18 -04:00
auditsc.c [PATCH] take filling ->pid, etc. out of audit_get_context() 2006-08-03 10:59:51 -04:00
capability.c
compat.c
configs.c
cpu.c
cpuset.c [PATCH] cpuset: oom panic fix 2006-08-27 11:01:32 -07:00
delayacct.c [PATCH] task delay accounting fixes 2006-09-01 11:39:08 -07:00
dma.c
exec_domain.c
exit.c [PATCH] eligible_child: remove an obsolete ->tgid check 2006-09-02 14:51:27 -07:00
extable.c
fork.c [PATCH] task delay accounting fixes 2006-09-01 11:39:08 -07:00
futex_compat.c [PATCH] futex: Apply recent futex fixes to futex_compat 2006-08-06 08:57:49 -07:00
futex.c [PATCH] Use the correct restart option for futex_lock_pi 2006-09-08 10:22:50 -07:00
hrtimer.c [PATCH] fix hrtimer percpu usage typo 2006-08-14 12:54:28 -07:00
itimer.c
kallsyms.c
Kconfig.hz
Kconfig.preempt
kexec.c
kfifo.c
kmod.c
kprobes.c
ksysfs.c
kthread.c
lockdep_internals.h
lockdep_proc.c
lockdep.c
Makefile
module.c
mutex-debug.c
mutex-debug.h
mutex.c
mutex.h
panic.c [PATCH] lockdep: do not touch console state when tainting the kernel 2006-09-06 11:00:02 -07:00
params.c
pid.c
posix-cpu-timers.c
posix-timers.c
printk.c [PATCH] vt: printk: Fix framebuffer console triggering might_sleep assertion 2006-08-06 08:57:47 -07:00
profile.c
ptrace.c
rcupdate.c
rcutorture.c
relay.c
resource.c [PATCH] memory hotadd fixes: find_next_system_ram catch range fix 2006-08-06 08:57:48 -07:00
rtmutex_common.h
rtmutex-debug.c
rtmutex-debug.h
rtmutex-tester.c
rtmutex.c
rtmutex.h
rwsem.c
sched.c [PATCH] revert "Drop tasklist lock in do_sched_setscheduler" 2006-08-27 11:01:29 -07:00
seccomp.c
signal.c
softirq.c
softlockup.c
spinlock.c [PATCH] lockdep ifdef fix 2006-09-06 11:00:01 -07:00
stacktrace.c
stop_machine.c [PATCH] Remove redundant up() in stop_machine() 2006-08-27 11:01:31 -07:00
sys_ni.c
sys.c
sysctl.c
taskstats.c
time.c
timer.c [PATCH] sys_getppid oopses on debug kernel 2006-08-14 12:54:29 -07:00
uid16.c
unwind.c
user.c
wait.c
workqueue.c [PATCH] workqueue: remove lock_cpu_hotplug() 2006-08-14 12:54:29 -07:00