Module Name: src
Committed By: riastradh
Date: Sun Dec 19 00:50:11 UTC 2021
Modified Files:
src/sys/external/bsd/drm2/include/asm: uaccess.h
Log Message:
Tweak get_user and put_user.
- Add type check to get_user.
- Use temporary for put_user, since argument might not be lvalue.
- Clarify argument names.
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 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.3 src/sys/external/bsd/drm2/include/asm/uaccess.h:1.4
--- src/sys/external/bsd/drm2/include/asm/uaccess.h:1.3 Sun Sep 10 22:51:48 2017
+++ src/sys/external/bsd/drm2/include/asm/uaccess.h Sun Dec 19 00:50:11 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: uaccess.h,v 1.3 2017/09/10 22:51:48 maya Exp $ */
+/* $NetBSD: uaccess.h,v 1.4 2021/12/19 00:50:11 riastradh Exp $ */
/*-
* Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -63,11 +63,14 @@ copy_to_user(void *user_addr, const void
return -copyout(kernel_addr, user_addr, len);
}
-#define get_user(KERNEL_LOC, USER_ADDR) \
- copy_from_user(&(KERNEL_LOC), (USER_ADDR), sizeof(KERNEL_LOC))
-
-#define put_user(KERNEL_LOC, USER_ADDR) \
- copy_to_user((USER_ADDR), &(KERNEL_LOC), sizeof(KERNEL_LOC))
+#define get_user(KERNEL_LVAL, USER_PTR) \
+ copy_from_user(&(KERNEL_LVAL), (USER_PTR), sizeof(*(USER_PTR)) + \
+ 0*sizeof(&(KERNEL_LVAL) - (USER_PTR)))
+
+#define put_user(KERNEL_RVAL, USER_PTR) ({ \
+ const typeof(*(USER_PTR)) __put_user_tmp = (KERNEL_RVAL); \
+ copy_to_user((USER_PTR), &__put_user_tmp, sizeof(__put_user_tmp)); \
+})
#if 0
/*