root/arch/hexagon/mm/uaccess.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. __clear_user_hexagon
  2. clear_user_hexagon

   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 <asm/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 unsigned long clear_user_hexagon(void __user *dest, unsigned long count)
  40 {
  41         if (!access_ok(dest, count))
  42                 return count;
  43         else
  44                 return __clear_user_hexagon(dest, count);
  45 }

/* [<][>][^][v][top][bottom][index][help] */