Kernel: Use local labels in assembly

This commit is contained in:
2026-08-22 11:57:19 +03:00
parent 2f25bfb2db
commit 82fd57af9e
7 changed files with 57 additions and 62 deletions
+14 -14
View File
@@ -20,28 +20,28 @@ safe_user_strncpy:
testq %rcx, %rcx
jz safe_user_strncpy_fault
.safe_user_strncpy_align_loop:
.Lsafe_user_strncpy_align_loop:
testb $0x7, %sil
jz .safe_user_strncpy_align_done
jz .Lsafe_user_strncpy_align_done
movb (%rsi), %al
movb %al, (%rdi)
testb %al, %al
jz .safe_user_strncpy_done
jz .Lsafe_user_strncpy_done
incq %rdi
incq %rsi
decq %rcx
jnz .safe_user_strncpy_align_loop
jnz .Lsafe_user_strncpy_align_loop
jmp safe_user_strncpy_fault
.safe_user_strncpy_align_done:
.Lsafe_user_strncpy_align_done:
movq $0x0101010101010101, %r8
movq $0x8080808080808080, %r9
.safe_user_strncpy_qword_loop:
.Lsafe_user_strncpy_qword_loop:
cmpq $8, %rcx
jb .safe_user_strncpy_qword_done
jb .Lsafe_user_strncpy_qword_done
movq (%rsi), %rax
movq %rax, %r10
@@ -52,36 +52,36 @@ safe_user_strncpy:
notq %r11
andq %r11, %r10
andq %r9, %r10
jnz .safe_user_strncpy_byte_loop
jnz .Lsafe_user_strncpy_byte_loop
movq %rax, (%rdi)
addq $8, %rdi
addq $8, %rsi
subq $8, %rcx
jnz .safe_user_strncpy_qword_loop
jnz .Lsafe_user_strncpy_qword_loop
jmp safe_user_strncpy_fault
.safe_user_strncpy_qword_done:
.Lsafe_user_strncpy_qword_done:
testq %rcx, %rcx
jz safe_user_strncpy_fault
.safe_user_strncpy_byte_loop:
.Lsafe_user_strncpy_byte_loop:
movb (%rsi), %al
movb %al, (%rdi)
testb %al, %al
jz .safe_user_strncpy_done
jz .Lsafe_user_strncpy_done
incq %rdi
incq %rsi
decq %rcx
jnz .safe_user_strncpy_byte_loop
jnz .Lsafe_user_strncpy_byte_loop
safe_user_strncpy_fault:
xorq %rax, %rax
ret
.safe_user_strncpy_done:
.Lsafe_user_strncpy_done:
movb $1, %al
ret
safe_user_strncpy_end: