microblaze: Fix strncpy_from_user macro
Problem happens when len in strncpy_from_user is setup and passing string has len-1 chars + \0 terminated character. In this case was returned incorrect length of the string. It should always retunrs the length of the string (not including the trailing NULL). Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
836dc9e3fb
commit
1de9e46c21
|
@ -38,15 +38,14 @@ __strncpy_user:
|
||||||
addik r3,r7,0 /* temp_count = len */
|
addik r3,r7,0 /* temp_count = len */
|
||||||
1:
|
1:
|
||||||
lbu r4,r6,r0
|
lbu r4,r6,r0
|
||||||
|
beqid r4,2f
|
||||||
sb r4,r5,r0
|
sb r4,r5,r0
|
||||||
|
|
||||||
addik r3,r3,-1
|
|
||||||
beqi r3,2f /* break on len */
|
|
||||||
|
|
||||||
addik r5,r5,1
|
addik r5,r5,1
|
||||||
bneid r4,1b
|
|
||||||
addik r6,r6,1 /* delay slot */
|
addik r6,r6,1 /* delay slot */
|
||||||
addik r3,r3,1 /* undo "temp_count--" */
|
|
||||||
|
addik r3,r3,-1
|
||||||
|
bnei r3,1b /* break on len */
|
||||||
2:
|
2:
|
||||||
rsubk r3,r3,r7 /* temp_count = len - temp_count */
|
rsubk r3,r3,r7 /* temp_count = len - temp_count */
|
||||||
3:
|
3:
|
||||||
|
|
Loading…
Reference in New Issue