@@ -44,8 +44,6 @@ asmlinkage __wsum csum_partial_copy_generic(const void *src, void *dst,
44
44
/*
45
45
* Note: when you get a NULL pointer exception here this means someone
46
46
* passed in an incorrect kernel address to one of these functions.
47
- *
48
- * If you use these functions directly please don't forget the access_ok().
49
47
*/
50
48
static inline
51
49
__wsum csum_partial_copy_nocheck (const void * src , void * dst ,
@@ -54,12 +52,17 @@ __wsum csum_partial_copy_nocheck(const void *src, void *dst,
54
52
return csum_partial_copy_generic (src , dst , len , sum , NULL , NULL );
55
53
}
56
54
55
+ #define _HAVE_ARCH_COPY_AND_CSUM_FROM_USER
57
56
static inline
58
- __wsum csum_partial_copy_from_user (const void __user * src , void * dst ,
57
+ __wsum csum_and_copy_from_user (const void __user * src , void * dst ,
59
58
int len , __wsum sum , int * err_ptr )
60
59
{
61
- return csum_partial_copy_generic ((__force const void * )src , dst ,
60
+ if (access_ok (dst , len ))
61
+ return csum_partial_copy_generic ((__force const void * )src , dst ,
62
62
len , sum , err_ptr , NULL );
63
+ if (len )
64
+ * err_ptr = - EFAULT ;
65
+ return sum ;
63
66
}
64
67
65
68
/*
0 commit comments