projects
/
linux-2.6-microblaze.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge v5.14-rc3 into usb-next
[linux-2.6-microblaze.git]
/
arch
/
arm64
/
lib
/
copy_to_user.S
diff --git
a/arch/arm64/lib/copy_to_user.S
b/arch/arm64/lib/copy_to_user.S
index
043da90
..
9f380ee
100644
(file)
--- a/
arch/arm64/lib/copy_to_user.S
+++ b/
arch/arm64/lib/copy_to_user.S
@@
-32,7
+32,7
@@
.endm
.macro strh1 reg, ptr, val
.endm
.macro strh1 reg, ptr, val
- user_ldst 999
8
f, sttrh, \reg, \ptr, \val
+ user_ldst 999
7
f, sttrh, \reg, \ptr, \val
.endm
.macro ldr1 reg, ptr, val
.endm
.macro ldr1 reg, ptr, val
@@
-40,7
+40,7
@@
.endm
.macro str1 reg, ptr, val
.endm
.macro str1 reg, ptr, val
- user_ldst 999
8
f, sttr, \reg, \ptr, \val
+ user_ldst 999
7
f, sttr, \reg, \ptr, \val
.endm
.macro ldp1 reg1, reg2, ptr, val
.endm
.macro ldp1 reg1, reg2, ptr, val
@@
-48,12
+48,14
@@
.endm
.macro stp1 reg1, reg2, ptr, val
.endm
.macro stp1 reg1, reg2, ptr, val
- user_stp 999
8
f, \reg1, \reg2, \ptr, \val
+ user_stp 999
7
f, \reg1, \reg2, \ptr, \val
.endm
end .req x5
.endm
end .req x5
+srcin .req x15
SYM_FUNC_START(__arch_copy_to_user)
add end, x0, x2
SYM_FUNC_START(__arch_copy_to_user)
add end, x0, x2
+ mov srcin, x1
#include "copy_template.S"
mov x0, #0
ret
#include "copy_template.S"
mov x0, #0
ret
@@
-62,6
+64,12
@@
EXPORT_SYMBOL(__arch_copy_to_user)
.section .fixup,"ax"
.align 2
.section .fixup,"ax"
.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
ret
.previous
9998: sub x0, end, dst // bytes not copied
ret
.previous