x86: adapt x86_64 getuser functions.
Instead of doing a sub after the addition, use the offset directly at the memory operand of the mov instructions. This is the way i386 do. Signed-off-by: Glauber Costa <gcosta@redhat.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Ingo Molnar
parent
9aa038815b
commit
9262875395
@@ -47,49 +47,40 @@ ENDPROC(__get_user_1)
|
|||||||
|
|
||||||
ENTRY(__get_user_2)
|
ENTRY(__get_user_2)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
GET_THREAD_INFO(%rdx)
|
|
||||||
addq $1,%rax
|
addq $1,%rax
|
||||||
jc 20f
|
jc bad_get_user
|
||||||
|
GET_THREAD_INFO(%rdx)
|
||||||
cmpq threadinfo_addr_limit(%rdx),%rax
|
cmpq threadinfo_addr_limit(%rdx),%rax
|
||||||
jae 20f
|
jae bad_get_user
|
||||||
decq %rax
|
2: movzwl -1(%rax),%edx
|
||||||
2: movzwl (%rax),%edx
|
|
||||||
xorl %eax,%eax
|
xorl %eax,%eax
|
||||||
ret
|
ret
|
||||||
20: decq %rax
|
|
||||||
jmp bad_get_user
|
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
ENDPROC(__get_user_2)
|
ENDPROC(__get_user_2)
|
||||||
|
|
||||||
ENTRY(__get_user_4)
|
ENTRY(__get_user_4)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
GET_THREAD_INFO(%rdx)
|
|
||||||
addq $3,%rax
|
addq $3,%rax
|
||||||
jc 30f
|
jc bad_get_user
|
||||||
|
GET_THREAD_INFO(%rdx)
|
||||||
cmpq threadinfo_addr_limit(%rdx),%rax
|
cmpq threadinfo_addr_limit(%rdx),%rax
|
||||||
jae 30f
|
jae bad_get_user
|
||||||
subq $3,%rax
|
3: movl -3(%rax),%edx
|
||||||
3: movl (%rax),%edx
|
|
||||||
xorl %eax,%eax
|
xorl %eax,%eax
|
||||||
ret
|
ret
|
||||||
30: subq $3,%rax
|
|
||||||
jmp bad_get_user
|
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
ENDPROC(__get_user_4)
|
ENDPROC(__get_user_4)
|
||||||
|
|
||||||
ENTRY(__get_user_8)
|
ENTRY(__get_user_8)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
GET_THREAD_INFO(%rdx)
|
|
||||||
addq $7,%rax
|
addq $7,%rax
|
||||||
jc 40f
|
jc bad_get_user
|
||||||
|
GET_THREAD_INFO(%rdx)
|
||||||
cmpq threadinfo_addr_limit(%rdx),%rax
|
cmpq threadinfo_addr_limit(%rdx),%rax
|
||||||
jae 40f
|
jae bad_get_user
|
||||||
subq $7,%rax
|
4: movq -7(%rax),%rdx
|
||||||
4: movq (%rax),%rdx
|
|
||||||
xorl %eax,%eax
|
xorl %eax,%eax
|
||||||
ret
|
ret
|
||||||
40: subq $7,%rax
|
|
||||||
jmp bad_get_user
|
|
||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
ENDPROC(__get_user_8)
|
ENDPROC(__get_user_8)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user