From: Alexander Nyberg <alexn@telia.com>
To: ak@suse.de
Cc: linux-kernel@vger.kernel.org, akpm@osdl.org, nicolas@boichat.ch
Subject: x86_64: Bug in new out of line put_user()
Date: Thu, 21 Apr 2005 01:10:09 +0200 [thread overview]
Message-ID: <1114038609.500.2.camel@localhost.localdomain> (raw)
The new out of line put_user() assembly on x86_64 changes %rcx without
telling GCC about it causing things like:
http://bugme.osdl.org/show_bug.cgi?id=4515
See to it that %rcx is not changed (made it consistent with get_user()).
Signed-off-by: Alexander Nyberg <alexn@telia.com>
Index: test/arch/x86_64/lib/getuser.S
===================================================================
--- test.orig/arch/x86_64/lib/getuser.S 2005-04-20 23:55:35.000000000 +0200
+++ test/arch/x86_64/lib/getuser.S 2005-04-21 00:54:16.000000000 +0200
@@ -78,9 +78,9 @@
__get_user_8:
GET_THREAD_INFO(%r8)
addq $7,%rcx
- jc bad_get_user
+ jc 40f
cmpq threadinfo_addr_limit(%r8),%rcx
- jae bad_get_user
+ jae 40f
subq $7,%rcx
4: movq (%rcx),%rdx
xorl %eax,%eax
Index: test/arch/x86_64/lib/putuser.S
===================================================================
--- test.orig/arch/x86_64/lib/putuser.S 2005-04-21 00:50:24.000000000 +0200
+++ test/arch/x86_64/lib/putuser.S 2005-04-21 01:02:15.000000000 +0200
@@ -46,36 +46,45 @@
__put_user_2:
GET_THREAD_INFO(%r8)
addq $1,%rcx
- jc bad_put_user
+ jc 20f
cmpq threadinfo_addr_limit(%r8),%rcx
- jae bad_put_user
-2: movw %dx,-1(%rcx)
+ jae 20f
+2: decq %rcx
+ movw %dx,(%rcx)
xorl %eax,%eax
ret
+20: decq %rcx
+ jmp bad_put_user
.p2align 4
.globl __put_user_4
__put_user_4:
GET_THREAD_INFO(%r8)
addq $3,%rcx
- jc bad_put_user
+ jc 30f
cmpq threadinfo_addr_limit(%r8),%rcx
- jae bad_put_user
-3: movl %edx,-3(%rcx)
+ jae 30f
+3: subq $3,%rcx
+ movl %edx,(%rcx)
xorl %eax,%eax
ret
+30: subq $3,%rcx
+ jmp bad_put_user
.p2align 4
.globl __put_user_8
__put_user_8:
GET_THREAD_INFO(%r8)
addq $7,%rcx
- jc bad_put_user
+ jc 40f
cmpq threadinfo_addr_limit(%r8),%rcx
- jae bad_put_user
-4: movq %rdx,-7(%rcx)
+ jae 40f
+4: subq $7,%rcx
+ movq %rdx,(%rcx)
xorl %eax,%eax
ret
+40: subq $7,%rcx
+ jmp bad_put_user
bad_put_user:
movq $(-EFAULT),%rax
next reply other threads:[~2005-04-20 23:10 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-20 23:10 Alexander Nyberg [this message]
2005-04-21 11:10 ` x86_64: Bug in new out of line put_user() Andi Kleen
2005-04-21 13:05 ` Nicolas Boichat
2005-04-21 23:55 ` Nicolas Boichat
2005-04-22 0:32 ` Brian Gerst
2005-04-22 8:22 ` Alexander Nyberg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1114038609.500.2.camel@localhost.localdomain \
--to=alexn@telia.com \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nicolas@boichat.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.