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