Module Name: src
Committed By: riastradh
Date: Sun Dec 19 00:55:01 UTC 2021
Modified Files:
src/sys/external/bsd/drm2/include/asm: uaccess.h
Log Message:
Implement hokey slow clear_user.
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/external/bsd/drm2/include/asm/uaccess.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/drm2/include/asm/uaccess.h
diff -u src/sys/external/bsd/drm2/include/asm/uaccess.h:1.4 src/sys/external/bsd/drm2/include/asm/uaccess.h:1.5
--- src/sys/external/bsd/drm2/include/asm/uaccess.h:1.4 Sun Dec 19 00:50:11 2021
+++ src/sys/external/bsd/drm2/include/asm/uaccess.h Sun Dec 19 00:55:01 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: uaccess.h,v 1.4 2021/12/19 00:50:11 riastradh Exp $ */
+/* $NetBSD: uaccess.h,v 1.5 2021/12/19 00:55:01 riastradh Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -72,6 +72,25 @@ copy_to_user(void *user_addr, const void
copy_to_user((USER_PTR), &__put_user_tmp, sizeof(__put_user_tmp)); \
})
+static inline size_t
+clear_user(void __user *user_ptr, size_t size)
+{
+ char __user *p = user_ptr;
+ size_t n = size;
+
+ /*
+ * This loop which sets up a fault handler on every iteration
+ * is not going to win any speed records, but it'll do to copy
+ * out an int.
+ */
+ while (n --> 0) {
+ if (subyte(p, 0) != 0)
+ return ++n;
+ }
+
+ return 0;
+}
+
#if 0
/*
* XXX These `inatomic' versions are a cop out, but they should do for