Commit 66294cf3 authored by Cheng Jian's avatar Cheng Jian Committed by Zheng Zengkai
Browse files

lib/clear_user: ensure loop in __arch_clear_user cache-aligned v2

hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I4K6CJ


CVE: NA

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

We must ensure that the following four instructions are cache-aligned.
Otherwise, it will cause problems with the performance of libMicro
pread.

1:
        # uao_user_alternative 9f, str, sttr, xzr, x0, 8
        str     xzr, [x0], #8
        nop
        subs    x1, x1, #8
        b.pl    1b

with this patch:

             prc thr   usecs/call      samples   errors cnt/samp     size
pread_z100     1   1      5.88400          807        0 1            102400

The result of pread can range from 5 to 9 depending on  the
alignment performance of this function.

Signed-off-by: default avatarCheng Jian <cj.chengjian@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent 52dce6f9
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -23,6 +23,9 @@ SYM_FUNC_START(__arch_clear_user)
	mov	x2, x1			// save the size for fixup return
	subs	x1, x1, #8
	b.mi	2f
#ifdef CONFIG_ARCH_HISI
	.align 5
#endif
1:
uao_user_alternative 9f, str, sttr, xzr, x0, 8
	subs	x1, x1, #8