Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/lib/strncpy_from_user.S
10817 views
1
/*
2
* linux/arch/arm/lib/strncpy_from_user.S
3
*
4
* Copyright (C) 1995-2000 Russell King
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License version 2 as
8
* published by the Free Software Foundation.
9
*/
10
#include <linux/linkage.h>
11
#include <asm/assembler.h>
12
#include <asm/errno.h>
13
14
.text
15
.align 5
16
17
/*
18
* Copy a string from user space to kernel space.
19
* r0 = dst, r1 = src, r2 = byte length
20
* returns the number of characters copied (strlen of copied string),
21
* -EFAULT on exception, or "len" if we fill the whole buffer
22
*/
23
ENTRY(__strncpy_from_user)
24
mov ip, r1
25
1: subs r2, r2, #1
26
ldrusr r3, r1, 1, pl
27
bmi 2f
28
strb r3, [r0], #1
29
teq r3, #0
30
bne 1b
31
sub r1, r1, #1 @ take NUL character out of count
32
2: sub r0, r1, ip
33
mov pc, lr
34
ENDPROC(__strncpy_from_user)
35
36
.pushsection .fixup,"ax"
37
.align 0
38
9001: mov r3, #0
39
strb r3, [r0, #0] @ null terminate
40
mov r0, #-EFAULT
41
mov pc, lr
42
.popsection
43
44
45