Skip to content

Commit 58c8c2d

Browse files
author
Fox Snowpatch
committed
1 parent ddf9a4c commit 58c8c2d

File tree

9 files changed

+15
-13
lines changed

9 files changed

+15
-13
lines changed

arch/arm/mm/fault.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
#ifdef CONFIG_MMU
2929

30-
bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
30+
bool copy_kernel_nofault_allowed(const void *unsafe_src, size_t size)
3131
{
3232
unsigned long addr = (unsigned long)unsafe_src;
3333

arch/loongarch/mm/maccess.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include <linux/uaccess.h>
44
#include <linux/kernel.h>
55

6-
bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
6+
bool copy_kernel_nofault_allowed(const void *unsafe_src, size_t size)
77
{
88
/* highest bit set means kernel space */
99
return (unsigned long)unsafe_src >> (BITS_PER_LONG - 1);

arch/mips/mm/maccess.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include <linux/uaccess.h>
44
#include <linux/kernel.h>
55

6-
bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
6+
bool copy_kernel_nofault_allowed(const void *unsafe_src, size_t size)
77
{
88
/* highest bit set means kernel space */
99
return (unsigned long)unsafe_src >> (BITS_PER_LONG - 1);

arch/parisc/lib/memcpy.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ void * memcpy(void * dst,const void *src, size_t count)
4848

4949
EXPORT_SYMBOL(memcpy);
5050

51-
bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
51+
bool copy_kernel_nofault_allowed(const void *unsafe_src, size_t size)
5252
{
5353
if ((unsigned long)unsafe_src < PAGE_SIZE)
5454
return false;

arch/powerpc/mm/maccess.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#include <asm/inst.h>
88
#include <asm/ppc-opcode.h>
99

10-
bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
10+
bool copy_kernel_nofault_allowed(const void *unsafe_src, size_t size)
1111
{
1212
return is_kernel_addr((unsigned long)unsafe_src);
1313
}

arch/um/kernel/maccess.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#include <linux/kernel.h>
88
#include <os.h>
99

10-
bool copy_from_kernel_nofault_allowed(const void *src, size_t size)
10+
bool copy_kernel_nofault_allowed(const void *src, size_t size)
1111
{
1212
void *psrc = (void *)rounddown((unsigned long)src, PAGE_SIZE);
1313

arch/x86/mm/maccess.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include <asm/vsyscall.h>
77

88
#ifdef CONFIG_X86_64
9-
bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
9+
bool copy_kernel_nofault_allowed(const void *unsafe_src, size_t size)
1010
{
1111
unsigned long vaddr = (unsigned long)unsafe_src;
1212

@@ -36,7 +36,7 @@ bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
3636
return __is_canonical_address(vaddr, boot_cpu_data.x86_virt_bits);
3737
}
3838
#else
39-
bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size)
39+
bool copy_kernel_nofault_allowed(const void *unsafe_src, size_t size)
4040
{
4141
return (unsigned long)unsafe_src >= TASK_SIZE_MAX;
4242
}

include/linux/uaccess.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ copy_struct_from_user(void *dst, size_t ksize, const void __user *src,
387387
return 0;
388388
}
389389

390-
bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size);
390+
bool copy_kernel_nofault_allowed(const void *unsafe_src, size_t size);
391391

392392
long copy_from_kernel_nofault(void *dst, const void *src, size_t size);
393393
long notrace copy_to_kernel_nofault(void *dst, const void *src, size_t size);

mm/maccess.c

+6-4
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
#include <linux/uaccess.h>
88
#include <asm/tlb.h>
99

10-
bool __weak copy_from_kernel_nofault_allowed(const void *unsafe_src,
11-
size_t size)
10+
bool __weak copy_kernel_nofault_allowed(const void *unsafe_src, size_t size)
1211
{
1312
return true;
1413
}
@@ -28,7 +27,7 @@ long copy_from_kernel_nofault(void *dst, const void *src, size_t size)
2827
if (!IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS))
2928
align = (unsigned long)dst | (unsigned long)src;
3029

31-
if (!copy_from_kernel_nofault_allowed(src, size))
30+
if (!copy_kernel_nofault_allowed(src, size))
3231
return -ERANGE;
3332

3433
pagefault_disable();
@@ -62,6 +61,9 @@ long copy_to_kernel_nofault(void *dst, const void *src, size_t size)
6261
if (!IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS))
6362
align = (unsigned long)dst | (unsigned long)src;
6463

64+
if (!copy_kernel_nofault_allowed(dst, size))
65+
return -ERANGE;
66+
6567
pagefault_disable();
6668
if (!(align & 7))
6769
copy_to_kernel_nofault_loop(dst, src, size, u64, Efault);
@@ -83,7 +85,7 @@ long strncpy_from_kernel_nofault(char *dst, const void *unsafe_addr, long count)
8385

8486
if (unlikely(count <= 0))
8587
return 0;
86-
if (!copy_from_kernel_nofault_allowed(unsafe_addr, count))
88+
if (!copy_kernel_nofault_allowed(unsafe_addr, count))
8789
return -ERANGE;
8890

8991
pagefault_disable();

0 commit comments

Comments
 (0)