Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/hexagon/mm/uaccess.c
26439 views
1
// SPDX-License-Identifier: GPL-2.0-only
2
/*
3
* Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
4
*/
5
6
/*
7
* Support for user memory access from kernel. This will
8
* probably be inlined for performance at some point, but
9
* for ease of debug, and to a lesser degree for code size,
10
* we implement here as subroutines.
11
*/
12
#include <linux/types.h>
13
#include <linux/uaccess.h>
14
#include <linux/pgtable.h>
15
16
/*
17
* For clear_user(), exploit previously defined copy_to_user function
18
* and the fact that we've got a handy zero page defined in kernel/head.S
19
*
20
* dczero here would be even faster.
21
*/
22
__kernel_size_t __clear_user_hexagon(void __user *dest, unsigned long count)
23
{
24
long uncleared;
25
26
while (count > PAGE_SIZE) {
27
uncleared = raw_copy_to_user(dest, &empty_zero_page, PAGE_SIZE);
28
if (uncleared)
29
return count - (PAGE_SIZE - uncleared);
30
count -= PAGE_SIZE;
31
dest += PAGE_SIZE;
32
}
33
if (count)
34
count = raw_copy_to_user(dest, &empty_zero_page, count);
35
36
return count;
37
}
38
39