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

Reply via email to