patch-2.1.23 linux/include/asm-i386/uaccess.h
Next file: linux/include/asm-i386/unistd.h
Previous file: linux/include/asm-i386/system.h
Back to the patch index
Back to the overall index
- Lines: 42
- Date:
Sun Jan 26 12:21:22 1997
- Orig file:
v2.1.22/linux/include/asm-i386/uaccess.h
- Orig date:
Wed Jan 15 19:45:44 1997
diff -u --recursive --new-file v2.1.22/linux/include/asm-i386/uaccess.h linux/include/asm-i386/uaccess.h
@@ -108,6 +108,25 @@
#define __put_user(x,ptr) \
__put_user_nocheck((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)))
+/*
+ * The "xxx_ret" versions return constant specified in third argument, if
+ * something bad happens. These macros can be optimized for the
+ * case of just returning from the function xxx_ret is used.
+ */
+
+#define put_user_ret(x,ptr,ret) ({ \
+if (put_user(x,ptr)) return ret; })
+
+#define get_user_ret(x,ptr,ret) ({ \
+if (get_user(x,ptr)) return ret; })
+
+#define __put_user_ret(x,ptr,ret) ({ \
+if (__put_user(x,ptr)) return ret; })
+
+#define __get_user_ret(x,ptr,ret) ({ \
+if (__get_user(x,ptr)) return ret; })
+
+
extern long __put_user_bad(void);
@@ -387,6 +406,15 @@
__constant_copy_from_user((to),(from),(n)) : \
__generic_copy_from_user((to),(from),(n)))
+#define copy_to_user_ret(to,from,n,retval) ({ \
+if (copy_to_user(to,from,n)) \
+ return retval; \
+})
+
+#define copy_from_user_ret(to,from,n,retval) ({ \
+if (copy_from_user(to,from,n)) \
+ return retval; \
+})
#define __copy_to_user(to,from,n) \
(__builtin_constant_p(n) ? \
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov