block: add QUEUE_FLAG_NOWAIT
[linux-2.6-microblaze.git] / include / linux / uaccess.h
index 0a76ddc..94b2854 100644 (file)
@@ -6,10 +6,26 @@
 #include <linux/sched.h>
 #include <linux/thread_info.h>
 
-#define uaccess_kernel() segment_eq(get_fs(), KERNEL_DS)
-
 #include <asm/uaccess.h>
 
+/*
+ * Force the uaccess routines to be wired up for actual userspace access,
+ * overriding any possible set_fs(KERNEL_DS) still lingering around.  Undone
+ * using force_uaccess_end below.
+ */
+static inline mm_segment_t force_uaccess_begin(void)
+{
+       mm_segment_t fs = get_fs();
+
+       set_fs(USER_DS);
+       return fs;
+}
+
+static inline void force_uaccess_end(mm_segment_t oldfs)
+{
+       set_fs(oldfs);
+}
+
 /*
  * Architectures should provide two primitives (raw_copy_{to,from}_user())
  * and get rid of their private instances of copy_{to,from}_user() and