Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 53938a68 authored by Glauber Costa's avatar Glauber Costa Committed by Ingo Molnar
Browse files

x86: commonize __range_not_ok.



For i386, __range_not_ok is a better name than __range_ok, since
it returns 0 when it is in fact okay. Other than that,
both versions does not need the word size specifiers, and we remove them.

Signed-off-by: default avatarGlauber Costa <gcosta@redhat.com>
Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 5cbbc3b1
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -56,11 +56,11 @@ extern struct movsl_mask {
 *
 * This needs 33-bit arithmetic. We have a carry...
 */
#define __range_ok(addr, size)						\
#define __range_not_ok(addr, size)					\
({									\
	unsigned long flag, roksum;					\
	__chk_user_ptr(addr);						\
	asm("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0"		\
	asm("add %3,%1 ; sbb %0,%0; cmp %1,%4; sbb $0,%0"		\
	    :"=&r" (flag), "=r" (roksum)				\
	    :"1" (addr), "g" ((int)(size)),				\
	    "rm" (current_thread_info()->addr_limit.seg));		\
@@ -86,7 +86,7 @@ extern struct movsl_mask {
 * checks that the pointer is in the user space range - after calling
 * this function, memory access functions may still return -EFAULT.
 */
#define access_ok(type, addr, size) (likely(__range_ok(addr, size) == 0))
#define access_ok(type, addr, size) (likely(__range_not_ok(addr, size) == 0))

/*
 * The exception table consists of pairs of addresses: the first is the
+1 −2
Original line number Diff line number Diff line
@@ -41,8 +41,7 @@
({									\
	unsigned long flag, roksum;					\
	__chk_user_ptr(addr);						\
	asm("# range_ok\n\r"						\
	    "addq %3,%1 ; sbbq %0,%0 ; cmpq %1,%4 ; sbbq $0,%0"		\
	asm("add %3,%1 ; sbb %0,%0 ; cmp %1,%4 ; sbb $0,%0"		\
	    : "=&r" (flag), "=r" (roksum)				\
	    : "1" (addr), "g" ((long)(size)),				\
	      "g" (current_thread_info()->addr_limit.seg));		\