mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-21 12:04:03 +08:00
MIPS: uaccess: Added __get/__put_kernel_nofault
Added __get/__put_kernel_nofault as preparation for removing get/set_fs. Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
9a91dd501c
commit
08ee3a009f
@ -355,6 +355,18 @@ do { \
|
||||
(val) = __gu_tmp.t; \
|
||||
}
|
||||
|
||||
#define HAVE_GET_KERNEL_NOFAULT
|
||||
|
||||
#define __get_kernel_nofault(dst, src, type, err_label) \
|
||||
do { \
|
||||
int __gu_err; \
|
||||
\
|
||||
__get_kernel_common(*((type *)(dst)), sizeof(type), \
|
||||
(__force type *)(src)); \
|
||||
if (unlikely(__gu_err)) \
|
||||
goto err_label; \
|
||||
} while (0)
|
||||
|
||||
#ifndef CONFIG_EVA
|
||||
#define __put_kernel_common(ptr, size) __put_user_common(ptr, size)
|
||||
#else
|
||||
@ -483,6 +495,18 @@ do { \
|
||||
|
||||
extern void __put_user_unknown(void);
|
||||
|
||||
#define __put_kernel_nofault(dst, src, type, err_label) \
|
||||
do { \
|
||||
type __pu_val; \
|
||||
int __pu_err = 0; \
|
||||
\
|
||||
__pu_val = *(__force type *)(src); \
|
||||
__put_kernel_common(((type *)(dst)), sizeof(type)); \
|
||||
if (unlikely(__pu_err)) \
|
||||
goto err_label; \
|
||||
} while (0)
|
||||
|
||||
|
||||
/*
|
||||
* We're generating jump to subroutines which will be outside the range of
|
||||
* jump instructions
|
||||
|
@ -22,6 +22,10 @@ else
|
||||
obj-y += uasm-mips.o
|
||||
endif
|
||||
|
||||
ifndef CONFIG_EVA
|
||||
obj-y += maccess.o
|
||||
endif
|
||||
|
||||
obj-$(CONFIG_32BIT) += ioremap.o pgtable-32.o
|
||||
obj-$(CONFIG_64BIT) += ioremap64.o pgtable-64.o
|
||||
obj-$(CONFIG_HIGHMEM) += highmem.o
|
||||
|
10
arch/mips/mm/maccess.c
Normal file
10
arch/mips/mm/maccess.c
Normal file
@ -0,0 +1,10 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/kernel.h>
|
||||
|
||||
bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
|
||||
{
|
||||
/* highest bit set means kernel space */
|
||||
return (unsigned long)unsafe_src >> (BITS_PER_LONG - 1);
|
||||
}
|
Loading…
Reference in New Issue
Block a user