提交 8f9519dc 编写于 作者: Z Zhen Lei 提交者: Zheng Zengkai

Revert "arm64: Avoid premature usercopy failure"

hulk inclusion
category: performance
bugzilla: https://e.gitee.com/open_euler/issues/list?issue=I4SCW7
CVE: NA

-------------------------------------------------------------------------

This reverts commit 8d4f091c.

Temporary rollback, which will be backported later so that other patches
can be backported without conflict.
Signed-off-by: NZhen Lei <thunder.leizhen@huawei.com>
Reviewed-by: NChen Wandun <chenwandun@huawei.com>
Reviewed-by: NHanjun Guo <guohanjun@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 fff6e54f
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
.endm .endm
.macro ldrh1 reg, ptr, val .macro ldrh1 reg, ptr, val
uao_user_alternative 9997f, ldrh, ldtrh, \reg, \ptr, \val uao_user_alternative 9998f, ldrh, ldtrh, \reg, \ptr, \val
.endm .endm
.macro strh1 reg, ptr, val .macro strh1 reg, ptr, val
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
.endm .endm
.macro ldr1 reg, ptr, val .macro ldr1 reg, ptr, val
uao_user_alternative 9997f, ldr, ldtr, \reg, \ptr, \val uao_user_alternative 9998f, ldr, ldtr, \reg, \ptr, \val
.endm .endm
.macro str1 reg, ptr, val .macro str1 reg, ptr, val
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
.endm .endm
.macro ldp1 reg1, reg2, ptr, val .macro ldp1 reg1, reg2, ptr, val
uao_ldp 9997f, \reg1, \reg2, \ptr, \val uao_ldp 9998f, \reg1, \reg2, \ptr, \val
.endm .endm
.macro stp1 reg1, reg2, ptr, val .macro stp1 reg1, reg2, ptr, val
...@@ -53,10 +53,8 @@ ...@@ -53,10 +53,8 @@
.endm .endm
end .req x5 end .req x5
srcin .req x15
SYM_FUNC_START(__arch_copy_from_user) SYM_FUNC_START(__arch_copy_from_user)
add end, x0, x2 add end, x0, x2
mov srcin, x1
#include "copy_template.S" #include "copy_template.S"
mov x0, #0 // Nothing to copy mov x0, #0 // Nothing to copy
ret ret
...@@ -65,11 +63,6 @@ EXPORT_SYMBOL(__arch_copy_from_user) ...@@ -65,11 +63,6 @@ EXPORT_SYMBOL(__arch_copy_from_user)
.section .fixup,"ax" .section .fixup,"ax"
.align 2 .align 2
9997: cmp dst, dstin
b.ne 9998f
// Before being absolutely sure we couldn't copy anything, try harder
USER(9998f, ldtrb tmp1w, [srcin])
strb tmp1w, [dst], #1
9998: sub x0, end, dst // bytes not copied 9998: sub x0, end, dst // bytes not copied
ret ret
.previous .previous
...@@ -30,34 +30,33 @@ ...@@ -30,34 +30,33 @@
.endm .endm
.macro ldrh1 reg, ptr, val .macro ldrh1 reg, ptr, val
uao_user_alternative 9997f, ldrh, ldtrh, \reg, \ptr, \val uao_user_alternative 9998f, ldrh, ldtrh, \reg, \ptr, \val
.endm .endm
.macro strh1 reg, ptr, val .macro strh1 reg, ptr, val
uao_user_alternative 9997f, strh, sttrh, \reg, \ptr, \val uao_user_alternative 9998f, strh, sttrh, \reg, \ptr, \val
.endm .endm
.macro ldr1 reg, ptr, val .macro ldr1 reg, ptr, val
uao_user_alternative 9997f, ldr, ldtr, \reg, \ptr, \val uao_user_alternative 9998f, ldr, ldtr, \reg, \ptr, \val
.endm .endm
.macro str1 reg, ptr, val .macro str1 reg, ptr, val
uao_user_alternative 9997f, str, sttr, \reg, \ptr, \val uao_user_alternative 9998f, str, sttr, \reg, \ptr, \val
.endm .endm
.macro ldp1 reg1, reg2, ptr, val .macro ldp1 reg1, reg2, ptr, val
uao_ldp 9997f, \reg1, \reg2, \ptr, \val uao_ldp 9998f, \reg1, \reg2, \ptr, \val
.endm .endm
.macro stp1 reg1, reg2, ptr, val .macro stp1 reg1, reg2, ptr, val
uao_stp 9997f, \reg1, \reg2, \ptr, \val uao_stp 9998f, \reg1, \reg2, \ptr, \val
.endm .endm
end .req x5 end .req x5
srcin .req x15
SYM_FUNC_START(__arch_copy_in_user) SYM_FUNC_START(__arch_copy_in_user)
add end, x0, x2 add end, x0, x2
mov srcin, x1
#include "copy_template.S" #include "copy_template.S"
mov x0, #0 mov x0, #0
ret ret
...@@ -66,12 +65,6 @@ EXPORT_SYMBOL(__arch_copy_in_user) ...@@ -66,12 +65,6 @@ EXPORT_SYMBOL(__arch_copy_in_user)
.section .fixup,"ax" .section .fixup,"ax"
.align 2 .align 2
9997: cmp dst, dstin
b.ne 9998f
// Before being absolutely sure we couldn't copy anything, try harder
USER(9998f, ldtrb tmp1w, [srcin])
USER(9998f, sttrb tmp1w, [dst])
add dst, dst, #1
9998: sub x0, end, dst // bytes not copied 9998: sub x0, end, dst // bytes not copied
ret ret
.previous .previous
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
.endm .endm
.macro strh1 reg, ptr, val .macro strh1 reg, ptr, val
uao_user_alternative 9997f, strh, sttrh, \reg, \ptr, \val uao_user_alternative 9998f, strh, sttrh, \reg, \ptr, \val
.endm .endm
.macro ldr1 reg, ptr, val .macro ldr1 reg, ptr, val
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
.endm .endm
.macro str1 reg, ptr, val .macro str1 reg, ptr, val
uao_user_alternative 9997f, str, sttr, \reg, \ptr, \val uao_user_alternative 9998f, str, sttr, \reg, \ptr, \val
.endm .endm
.macro ldp1 reg1, reg2, ptr, val .macro ldp1 reg1, reg2, ptr, val
...@@ -48,14 +48,12 @@ ...@@ -48,14 +48,12 @@
.endm .endm
.macro stp1 reg1, reg2, ptr, val .macro stp1 reg1, reg2, ptr, val
uao_stp 9997f, \reg1, \reg2, \ptr, \val uao_stp 9998f, \reg1, \reg2, \ptr, \val
.endm .endm
end .req x5 end .req x5
srcin .req x15
SYM_FUNC_START(__arch_copy_to_user) SYM_FUNC_START(__arch_copy_to_user)
add end, x0, x2 add end, x0, x2
mov srcin, x1
#include "copy_template.S" #include "copy_template.S"
mov x0, #0 mov x0, #0
ret ret
...@@ -64,12 +62,6 @@ EXPORT_SYMBOL(__arch_copy_to_user) ...@@ -64,12 +62,6 @@ EXPORT_SYMBOL(__arch_copy_to_user)
.section .fixup,"ax" .section .fixup,"ax"
.align 2 .align 2
9997: cmp dst, dstin
b.ne 9998f
// Before being absolutely sure we couldn't copy anything, try harder
ldrb tmp1w, [srcin]
USER(9998f, sttrb tmp1w, [dst])
add dst, dst, #1
9998: sub x0, end, dst // bytes not copied 9998: sub x0, end, dst // bytes not copied
ret ret
.previous .previous
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册