Merge branch 'topic/uaccess-ppc' into next
Merge our uaccess-ppc topic branch. It is based on the uaccess topic branch that we're sharing with Viro. This includes the addition of user_[read|write]_access_begin(), as well as some powerpc specific changes to our uaccess routines that would conflict badly if merged separately.
This commit is contained in:
@@ -199,7 +199,7 @@ long compat_get_bitmap(unsigned long *mask, const compat_ulong_t __user *umask,
|
||||
bitmap_size = ALIGN(bitmap_size, BITS_PER_COMPAT_LONG);
|
||||
nr_compat_longs = BITS_TO_COMPAT_LONGS(bitmap_size);
|
||||
|
||||
if (!user_access_begin(umask, bitmap_size / 8))
|
||||
if (!user_read_access_begin(umask, bitmap_size / 8))
|
||||
return -EFAULT;
|
||||
|
||||
while (nr_compat_longs > 1) {
|
||||
@@ -211,11 +211,11 @@ long compat_get_bitmap(unsigned long *mask, const compat_ulong_t __user *umask,
|
||||
}
|
||||
if (nr_compat_longs)
|
||||
unsafe_get_user(*mask, umask++, Efault);
|
||||
user_access_end();
|
||||
user_read_access_end();
|
||||
return 0;
|
||||
|
||||
Efault:
|
||||
user_access_end();
|
||||
user_read_access_end();
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
@@ -228,7 +228,7 @@ long compat_put_bitmap(compat_ulong_t __user *umask, unsigned long *mask,
|
||||
bitmap_size = ALIGN(bitmap_size, BITS_PER_COMPAT_LONG);
|
||||
nr_compat_longs = BITS_TO_COMPAT_LONGS(bitmap_size);
|
||||
|
||||
if (!user_access_begin(umask, bitmap_size / 8))
|
||||
if (!user_write_access_begin(umask, bitmap_size / 8))
|
||||
return -EFAULT;
|
||||
|
||||
while (nr_compat_longs > 1) {
|
||||
@@ -239,10 +239,10 @@ long compat_put_bitmap(compat_ulong_t __user *umask, unsigned long *mask,
|
||||
}
|
||||
if (nr_compat_longs)
|
||||
unsafe_put_user((compat_ulong_t)*mask, umask++, Efault);
|
||||
user_access_end();
|
||||
user_write_access_end();
|
||||
return 0;
|
||||
Efault:
|
||||
user_access_end();
|
||||
user_write_access_end();
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
|
@@ -1557,7 +1557,7 @@ SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *,
|
||||
if (!infop)
|
||||
return err;
|
||||
|
||||
if (!user_access_begin(infop, sizeof(*infop)))
|
||||
if (!user_write_access_begin(infop, sizeof(*infop)))
|
||||
return -EFAULT;
|
||||
|
||||
unsafe_put_user(signo, &infop->si_signo, Efault);
|
||||
@@ -1566,10 +1566,10 @@ SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *,
|
||||
unsafe_put_user(info.pid, &infop->si_pid, Efault);
|
||||
unsafe_put_user(info.uid, &infop->si_uid, Efault);
|
||||
unsafe_put_user(info.status, &infop->si_status, Efault);
|
||||
user_access_end();
|
||||
user_write_access_end();
|
||||
return err;
|
||||
Efault:
|
||||
user_access_end();
|
||||
user_write_access_end();
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
@@ -1684,7 +1684,7 @@ COMPAT_SYSCALL_DEFINE5(waitid,
|
||||
if (!infop)
|
||||
return err;
|
||||
|
||||
if (!user_access_begin(infop, sizeof(*infop)))
|
||||
if (!user_write_access_begin(infop, sizeof(*infop)))
|
||||
return -EFAULT;
|
||||
|
||||
unsafe_put_user(signo, &infop->si_signo, Efault);
|
||||
@@ -1693,10 +1693,10 @@ COMPAT_SYSCALL_DEFINE5(waitid,
|
||||
unsafe_put_user(info.pid, &infop->si_pid, Efault);
|
||||
unsafe_put_user(info.uid, &infop->si_uid, Efault);
|
||||
unsafe_put_user(info.status, &infop->si_status, Efault);
|
||||
user_access_end();
|
||||
user_write_access_end();
|
||||
return err;
|
||||
Efault:
|
||||
user_access_end();
|
||||
user_write_access_end();
|
||||
return -EFAULT;
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user