* Ok. This isn't fun, but this is the EASY case.
*/
static inline unsigned long
-csum_partial_cfu_aligned(const unsigned long *src, unsigned long *dst,
+csum_partial_cfu_aligned(const unsigned long __user *src, unsigned long *dst,
long len, unsigned long checksum,
int *errp)
{
* easy.
*/
static inline unsigned long
-csum_partial_cfu_dest_aligned(const unsigned long *src, unsigned long *dst,
+csum_partial_cfu_dest_aligned(const unsigned long __user *src,
+ unsigned long *dst,
unsigned long soff,
long len, unsigned long checksum,
int *errp)
* This is slightly less fun than the above..
*/
static inline unsigned long
-csum_partial_cfu_src_aligned(const unsigned long *src, unsigned long *dst,
+csum_partial_cfu_src_aligned(const unsigned long __user *src,
+ unsigned long *dst,
unsigned long doff,
long len, unsigned long checksum,
unsigned long partial_dest,
* look at this too closely, you'll go blind.
*/
static inline unsigned long
-csum_partial_cfu_unaligned(const unsigned long * src, unsigned long * dst,
+csum_partial_cfu_unaligned(const unsigned long __user * src,
+ unsigned long * dst,
unsigned long soff, unsigned long doff,
long len, unsigned long checksum,
unsigned long partial_dest,
}
static unsigned int
-do_csum_partial_copy_from_user(const char *src, char *dst, int len,
+do_csum_partial_copy_from_user(const char __user *src, char *dst, int len,
unsigned int sum, int *errp)
{
unsigned long checksum = (unsigned) sum;
if (!doff) {
if (!soff)
checksum = csum_partial_cfu_aligned(
- (const unsigned long *) src,
+ (const unsigned long __user *) src,
(unsigned long *) dst,
len-8, checksum, errp);
else
checksum = csum_partial_cfu_dest_aligned(
- (const unsigned long *) src,
+ (const unsigned long __user *) src,
(unsigned long *) dst,
soff, len-8, checksum, errp);
} else {
ldq_u(partial_dest, dst);
if (!soff)
checksum = csum_partial_cfu_src_aligned(
- (const unsigned long *) src,
+ (const unsigned long __user *) src,
(unsigned long *) dst,
doff, len-8, checksum,
partial_dest, errp);
else
checksum = csum_partial_cfu_unaligned(
- (const unsigned long *) src,
+ (const unsigned long __user *) src,
(unsigned long *) dst,
soff, doff, len-8, checksum,
partial_dest, errp);
}
unsigned int
-csum_partial_copy_from_user(const char *src, char *dst, int len,
+csum_partial_copy_from_user(const char __user *src, char *dst, int len,
unsigned int sum, int *errp)
{
- if (!access_ok(src, len, VERIFY_READ)) {
+ if (!access_ok(VERIFY_READ, src, len)) {
*errp = -EFAULT;
memset(dst, 0, len);
return sum;
}
unsigned int
-csum_partial_copy_nocheck(const char *src, char *dst, int len, unsigned int sum)
+csum_partial_copy_nocheck(const char __user *src, char *dst, int len,
+ unsigned int sum)
{
return do_csum_partial_copy_from_user(src, dst, len, sum, NULL);
}