Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/powerpc/lib/usercopy_64.c
10817 views
1
/*
2
* Functions which are too large to be inlined.
3
*
4
* This program is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU General Public License
6
* as published by the Free Software Foundation; either version
7
* 2 of the License, or (at your option) any later version.
8
*/
9
#include <linux/module.h>
10
#include <asm/uaccess.h>
11
12
unsigned long copy_from_user(void *to, const void __user *from, unsigned long n)
13
{
14
if (likely(access_ok(VERIFY_READ, from, n)))
15
n = __copy_from_user(to, from, n);
16
else
17
memset(to, 0, n);
18
return n;
19
}
20
21
unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
22
{
23
if (likely(access_ok(VERIFY_WRITE, to, n)))
24
n = __copy_to_user(to, from, n);
25
return n;
26
}
27
28
unsigned long copy_in_user(void __user *to, const void __user *from,
29
unsigned long n)
30
{
31
might_sleep();
32
if (likely(access_ok(VERIFY_READ, from, n) &&
33
access_ok(VERIFY_WRITE, to, n)))
34
n =__copy_tofrom_user(to, from, n);
35
return n;
36
}
37
38
EXPORT_SYMBOL(copy_from_user);
39
EXPORT_SYMBOL(copy_to_user);
40
EXPORT_SYMBOL(copy_in_user);
41
42
43