diff options
| author | Andi Kleen <ak@suse.de> | 2004-12-20 00:06:46 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-12-20 00:06:46 -0800 |
| commit | 0233f53fa39d43e2f923c3485502b0461cecc0d7 (patch) | |
| tree | 7170d59511adac8775187b8d993723f02560bacd /include/linux/node.h | |
| parent | 39509e479c8ed347452d4ebc75edad6a20216490 (diff) | |
[PATCH] x86_64: fix syscall/signal restart bug
Fix a pretty bad bug that caused sometimes signals on x86-64
to be restarted like system calls. This corrupted the RIP and
in general caused undesirable effects.
The problem happens because orig_rax is unsigned on x86-64,
but it originally was signed when the signal code was written.
And the if (orig_rax >= 0) ended up always true.
And gcc didn't warn about this, because the warning is only in
-Wextra.
In 2.4 we still had a cast for it, but somehow it got dropped
in 2.5.
Credit goes to John Slice for tracking it down and Erich Boleyn
for the original fix. All blame to me. I fixed it at another
place too.
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux/node.h')
0 files changed, 0 insertions, 0 deletions
