aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pk/usermem.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/pk/usermem.c b/pk/usermem.c
index b65e515..cfe6f06 100644
--- a/pk/usermem.c
+++ b/pk/usermem.c
@@ -43,6 +43,8 @@ void memcpy_from_user(void* dst, const void* src, size_t n)
bool strcpy_from_user(char* dst, const char* src, size_t n)
{
+ bool res = false;
+
uintptr_t sstatus = set_csr(sstatus, SSTATUS_SUM);
while (n > 0) {
@@ -52,8 +54,10 @@ bool strcpy_from_user(char* dst, const char* src, size_t n)
char ch = *(volatile const char*)src;
*dst = ch;
- if (ch == 0)
- return true;
+ if (ch == 0) {
+ res = true;
+ break;
+ }
src++;
dst++;
@@ -62,5 +66,5 @@ bool strcpy_from_user(char* dst, const char* src, size_t n)
write_csr(sstatus, sstatus);
- return false;
+ return res;
}