Commit 11836ece authored by Al Viro's avatar Al Viro

ia64: get rid of 'segment' argument of __do_{get,put}_user()

it's only evaluated if the first argument is not 0, and in those
cases it's always equal to get_fs()
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 1bd5986b
...@@ -180,13 +180,13 @@ extern void __get_user_unknown (void); ...@@ -180,13 +180,13 @@ extern void __get_user_unknown (void);
* could clobber r8 and r9 (among others). Thus, be careful not to evaluate it while * could clobber r8 and r9 (among others). Thus, be careful not to evaluate it while
* using r8/r9. * using r8/r9.
*/ */
#define __do_get_user(check, x, ptr, size, segment) \ #define __do_get_user(check, x, ptr, size) \
({ \ ({ \
const __typeof__(*(ptr)) __user *__gu_ptr = (ptr); \ const __typeof__(*(ptr)) __user *__gu_ptr = (ptr); \
__typeof__ (size) __gu_size = (size); \ __typeof__ (size) __gu_size = (size); \
long __gu_err = -EFAULT; \ long __gu_err = -EFAULT; \
unsigned long __gu_val = 0; \ unsigned long __gu_val = 0; \
if (!check || __access_ok(__gu_ptr, size, segment)) \ if (!check || __access_ok(__gu_ptr, size, get_fs())) \
switch (__gu_size) { \ switch (__gu_size) { \
case 1: __get_user_size(__gu_val, __gu_ptr, 1, __gu_err); break; \ case 1: __get_user_size(__gu_val, __gu_ptr, 1, __gu_err); break; \
case 2: __get_user_size(__gu_val, __gu_ptr, 2, __gu_err); break; \ case 2: __get_user_size(__gu_val, __gu_ptr, 2, __gu_err); break; \
...@@ -198,8 +198,8 @@ extern void __get_user_unknown (void); ...@@ -198,8 +198,8 @@ extern void __get_user_unknown (void);
__gu_err; \ __gu_err; \
}) })
#define __get_user_nocheck(x, ptr, size) __do_get_user(0, x, ptr, size, KERNEL_DS) #define __get_user_nocheck(x, ptr, size) __do_get_user(0, x, ptr, size)
#define __get_user_check(x, ptr, size) __do_get_user(1, x, ptr, size, get_fs()) #define __get_user_check(x, ptr, size) __do_get_user(1, x, ptr, size)
extern void __put_user_unknown (void); extern void __put_user_unknown (void);
...@@ -207,14 +207,14 @@ extern void __put_user_unknown (void); ...@@ -207,14 +207,14 @@ extern void __put_user_unknown (void);
* Evaluating arguments X, PTR, SIZE, and SEGMENT may involve subroutine-calls, which * Evaluating arguments X, PTR, SIZE, and SEGMENT may involve subroutine-calls, which
* could clobber r8 (among others). Thus, be careful not to evaluate them while using r8. * could clobber r8 (among others). Thus, be careful not to evaluate them while using r8.
*/ */
#define __do_put_user(check, x, ptr, size, segment) \ #define __do_put_user(check, x, ptr, size) \
({ \ ({ \
__typeof__ (x) __pu_x = (x); \ __typeof__ (x) __pu_x = (x); \
__typeof__ (*(ptr)) __user *__pu_ptr = (ptr); \ __typeof__ (*(ptr)) __user *__pu_ptr = (ptr); \
__typeof__ (size) __pu_size = (size); \ __typeof__ (size) __pu_size = (size); \
long __pu_err = -EFAULT; \ long __pu_err = -EFAULT; \
\ \
if (!check || __access_ok(__pu_ptr, __pu_size, segment)) \ if (!check || __access_ok(__pu_ptr, __pu_size, get_fs())) \
switch (__pu_size) { \ switch (__pu_size) { \
case 1: __put_user_size(__pu_x, __pu_ptr, 1, __pu_err); break; \ case 1: __put_user_size(__pu_x, __pu_ptr, 1, __pu_err); break; \
case 2: __put_user_size(__pu_x, __pu_ptr, 2, __pu_err); break; \ case 2: __put_user_size(__pu_x, __pu_ptr, 2, __pu_err); break; \
...@@ -225,8 +225,8 @@ extern void __put_user_unknown (void); ...@@ -225,8 +225,8 @@ extern void __put_user_unknown (void);
__pu_err; \ __pu_err; \
}) })
#define __put_user_nocheck(x, ptr, size) __do_put_user(0, x, ptr, size, KERNEL_DS) #define __put_user_nocheck(x, ptr, size) __do_put_user(0, x, ptr, size)
#define __put_user_check(x, ptr, size) __do_put_user(1, x, ptr, size, get_fs()) #define __put_user_check(x, ptr, size) __do_put_user(1, x, ptr, size)
/* /*
* Complex access routines * Complex access routines
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment