* [PATCH] x86/uaccess: Remove unused __addr_ok() macro
@ 2019-02-25 19:11 Borislav Petkov
2019-02-25 19:20 ` Linus Torvalds
2019-02-25 22:43 ` [tip:x86/cleanups] " tip-bot for Borislav Petkov
0 siblings, 2 replies; 7+ messages in thread
From: Borislav Petkov @ 2019-02-25 19:11 UTC (permalink / raw)
To: LKML
Cc: Andy Lutomirski, Jann Horn, Linus Torvalds, Peter Zijlstra,
the arch/x86 maintainers, Tobin C. Harding
From: Borislav Petkov <bp@suse.de>
This was caught while staring at the whole {set,get}_fs() machinery.
No functional changes.
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Jann Horn <jannh@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: the arch/x86 maintainers <x86@kernel.org>
Cc: "Tobin C. Harding" <tobin@kernel.org>
---
arch/x86/include/asm/uaccess.h | 3 ---
1 file changed, 3 deletions(-)
diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
index 780f2b42c8ef..e2ffedd51fd8 100644
--- a/arch/x86/include/asm/uaccess.h
+++ b/arch/x86/include/asm/uaccess.h
@@ -35,10 +35,7 @@ static inline void set_fs(mm_segment_t fs)
}
#define segment_eq(a, b) ((a).seg == (b).seg)
-
#define user_addr_max() (current->thread.addr_limit.seg)
-#define __addr_ok(addr) \
- ((unsigned long __force)(addr) < user_addr_max())
/*
* Test whether a block of memory is a valid user space address.
--
2.21.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH] x86/uaccess: Remove unused __addr_ok() macro 2019-02-25 19:11 [PATCH] x86/uaccess: Remove unused __addr_ok() macro Borislav Petkov @ 2019-02-25 19:20 ` Linus Torvalds 2019-02-25 19:42 ` Borislav Petkov 2019-02-25 22:43 ` [tip:x86/cleanups] " tip-bot for Borislav Petkov 1 sibling, 1 reply; 7+ messages in thread From: Linus Torvalds @ 2019-02-25 19:20 UTC (permalink / raw) To: Borislav Petkov Cc: LKML, Andy Lutomirski, Jann Horn, Peter Zijlstra, the arch/x86 maintainers, Tobin C. Harding On Mon, Feb 25, 2019 at 11:11 AM Borislav Petkov <bp@alien8.de> wrote: > > This was caught while staring at the whole {set,get}_fs() machinery. Heh. You should probably have researched _when_ it became unused. That seems to have happened in commit 5723aa993d83 ("x86: use the new generic strnlen_user() function") which removed the single user from the x86-32 version of strnlen_user(), which used to have unsigned long mask = -__addr_ok(s); in it. Way back in 2012. Ack. Linus ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/uaccess: Remove unused __addr_ok() macro 2019-02-25 19:20 ` Linus Torvalds @ 2019-02-25 19:42 ` Borislav Petkov 2019-02-25 21:08 ` Joe Perches 0 siblings, 1 reply; 7+ messages in thread From: Borislav Petkov @ 2019-02-25 19:42 UTC (permalink / raw) To: Linus Torvalds Cc: LKML, Andy Lutomirski, Jann Horn, Peter Zijlstra, the arch/x86 maintainers, Tobin C. Harding On Mon, Feb 25, 2019 at 11:20:42AM -0800, Linus Torvalds wrote: > On Mon, Feb 25, 2019 at 11:11 AM Borislav Petkov <bp@alien8.de> wrote: > > > > This was caught while staring at the whole {set,get}_fs() machinery. > > Heh. > > You should probably have researched _when_ it became unused. > > That seems to have happened in commit 5723aa993d83 ("x86: use the new > generic strnlen_user() function") which removed the single user from > the x86-32 version of strnlen_user(), which used to have > > unsigned long mask = -__addr_ok(s); Yap, found it. I still have $ git log -p -G__addr_ok --pickaxe-all in one of the shells' history here. I'll add that to the commit message. Thx. -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/uaccess: Remove unused __addr_ok() macro 2019-02-25 19:42 ` Borislav Petkov @ 2019-02-25 21:08 ` Joe Perches 2019-03-04 6:47 ` Christian Kujau 0 siblings, 1 reply; 7+ messages in thread From: Joe Perches @ 2019-02-25 21:08 UTC (permalink / raw) To: Borislav Petkov, Linus Torvalds Cc: LKML, Andy Lutomirski, Jann Horn, Peter Zijlstra, the arch/x86 maintainers, Tobin C. Harding On Mon, 2019-02-25 at 20:42 +0100, Borislav Petkov wrote: > On Mon, Feb 25, 2019 at 11:20:42AM -0800, Linus Torvalds wrote: > > On Mon, Feb 25, 2019 at 11:11 AM Borislav Petkov <bp@alien8.de> wrote: > > > This was caught while staring at the whole {set,get}_fs() machinery. > > > > Heh. > > > > You should probably have researched _when_ it became unused. > > > > That seems to have happened in commit 5723aa993d83 ("x86: use the new > > generic strnlen_user() function") which removed the single user from > > the x86-32 version of strnlen_user(), which used to have > > > > unsigned long mask = -__addr_ok(s); > > Yap, found it. I still have > > $ git log -p -G__addr_ok --pickaxe-all > > in one of the shells' history here. > > I'll add that to the commit message. > > Thx. Looks like it's not used in several arches $ git grep -w __addr_ok arch/arm/include/asm/uaccess.h:#define __addr_ok(addr) ((void)(addr), 1) arch/csky/include/asm/uaccess.h:#define __addr_ok(addr) (access_ok(addr, 0)) arch/openrisc/include/asm/uaccess.h:#define __addr_ok(addr) ((unsigned long) addr < get_fs()) arch/sh/include/asm/uaccess.h:#define __addr_ok(addr) \ arch/sh/include/asm/uaccess.h: __ao_end >= __ao_a && __addr_ok(__ao_end); }) arch/x86/include/asm/uaccess.h:#define __addr_ok(addr) \ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/uaccess: Remove unused __addr_ok() macro 2019-02-25 21:08 ` Joe Perches @ 2019-03-04 6:47 ` Christian Kujau 2019-03-27 13:15 ` Borislav Petkov 0 siblings, 1 reply; 7+ messages in thread From: Christian Kujau @ 2019-03-04 6:47 UTC (permalink / raw) To: Joe Perches; +Cc: Borislav Petkov, LKML On Mon, 25 Feb 2019, Joe Perches wrote: > Looks like it's not used in several arches > > $ git grep -w __addr_ok > arch/arm/include/asm/uaccess.h:#define __addr_ok(addr) ((void)(addr), 1) > arch/csky/include/asm/uaccess.h:#define __addr_ok(addr) (access_ok(addr, 0)) > arch/openrisc/include/asm/uaccess.h:#define __addr_ok(addr) ((unsigned long) addr < get_fs()) > arch/sh/include/asm/uaccess.h:#define __addr_ok(addr) \ > arch/sh/include/asm/uaccess.h: __ao_end >= __ao_a && __addr_ok(__ao_end); }) > arch/x86/include/asm/uaccess.h:#define __addr_ok(addr) \ If so, would simly removing it do the trick or is there more magic involved? I don't have that many cross-compilers though and it's not even build-tested: commit f899653c64cce05fde426d0298cd67670f8ab8e2 Author: Christian Kujau <lists@nerdbynature.de> Date: Sun Mar 3 22:43:09 2019 -0800 Remove unused __addr_ok() macro. arch/arm/include/asm/uaccess.h | 1 - arch/csky/include/asm/uaccess.h | 2 -- arch/openrisc/include/asm/uaccess.h | 3 --- arch/sh/include/asm/uaccess.h | 5 +---- arch/x86/include/asm/uaccess.h | 2 -- 5 files changed, 1 insertion(+), 12 deletions(-) Signed-off-by: Christian Kujau <lists@nerdbynature.de> diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h index 42aa4a22803c..16411c76076d 100644 --- a/arch/arm/include/asm/uaccess.h +++ b/arch/arm/include/asm/uaccess.h @@ -266,7 +266,6 @@ extern int __put_user_8(void *, unsigned long long); #define USER_DS KERNEL_DS #define segment_eq(a, b) (1) -#define __addr_ok(addr) ((void)(addr), 1) #define __range_ok(addr, size) ((void)(addr), 0) #define get_fs() (KERNEL_DS) diff --git a/arch/csky/include/asm/uaccess.h b/arch/csky/include/asm/uaccess.h index eaa1c3403a42..c02b243fecaa 100644 --- a/arch/csky/include/asm/uaccess.h +++ b/arch/csky/include/asm/uaccess.h @@ -24,8 +24,6 @@ static inline int access_ok(const void *addr, unsigned long size) ((unsigned long)(addr + size) < limit)); } -#define __addr_ok(addr) (access_ok(addr, 0)) - extern int __put_user_bad(void); /* diff --git a/arch/openrisc/include/asm/uaccess.h b/arch/openrisc/include/asm/uaccess.h index a44682c8adc3..9198371e30c2 100644 --- a/arch/openrisc/include/asm/uaccess.h +++ b/arch/openrisc/include/asm/uaccess.h @@ -55,9 +55,6 @@ */ #define __range_ok(addr, size) (size <= get_fs() && addr <= (get_fs()-size)) -/* Ensure that addr is below task's addr_limit */ -#define __addr_ok(addr) ((unsigned long) addr < get_fs()) - #define access_ok(addr, size) \ ({ \ unsigned long __ao_addr = (unsigned long)(addr); \ diff --git a/arch/sh/include/asm/uaccess.h b/arch/sh/include/asm/uaccess.h index 5fe751ad7582..b41f6a011474 100644 --- a/arch/sh/include/asm/uaccess.h +++ b/arch/sh/include/asm/uaccess.h @@ -5,9 +5,6 @@ #include <asm/segment.h> #include <asm/extable.h> -#define __addr_ok(addr) \ - ((unsigned long __force)(addr) < current_thread_info()->addr_limit.seg) - /* * __access_ok: Check if address with size is OK or not. * @@ -19,7 +16,7 @@ #define __access_ok(addr, size) ({ \ unsigned long __ao_a = (addr), __ao_b = (size); \ unsigned long __ao_end = __ao_a + __ao_b - !!__ao_b; \ - __ao_end >= __ao_a && __addr_ok(__ao_end); }) + __ao_end >= __ao_a; }) #define access_ok(addr, size) \ (__chk_user_ptr(addr), \ diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h index c1334aaaa78d..d630978738dc 100644 --- a/arch/x86/include/asm/uaccess.h +++ b/arch/x86/include/asm/uaccess.h @@ -37,8 +37,6 @@ static inline void set_fs(mm_segment_t fs) #define segment_eq(a, b) ((a).seg == (b).seg) #define user_addr_max() (current->thread.addr_limit.seg) -#define __addr_ok(addr) \ - ((unsigned long __force)(addr) < user_addr_max()) /* * Test whether a block of memory is a valid user space address. -- BOFH excuse #123: user to computer ratio too high. ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] x86/uaccess: Remove unused __addr_ok() macro 2019-03-04 6:47 ` Christian Kujau @ 2019-03-27 13:15 ` Borislav Petkov 0 siblings, 0 replies; 7+ messages in thread From: Borislav Petkov @ 2019-03-27 13:15 UTC (permalink / raw) To: Christian Kujau; +Cc: Joe Perches, LKML On Sun, Mar 03, 2019 at 10:47:00PM -0800, Christian Kujau wrote: > If so, would simly removing it do the trick or is there more magic > involved? I don't have that many cross-compilers though and it's not even > build-tested: There are cross compilers here: https://www.kernel.org/pub/tools/crosstool/ which you can use. And perhaps splitting that patch per architecture and letting arch maintainers apply each, would be easier. I think. Thx. -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [tip:x86/cleanups] x86/uaccess: Remove unused __addr_ok() macro 2019-02-25 19:11 [PATCH] x86/uaccess: Remove unused __addr_ok() macro Borislav Petkov 2019-02-25 19:20 ` Linus Torvalds @ 2019-02-25 22:43 ` tip-bot for Borislav Petkov 1 sibling, 0 replies; 7+ messages in thread From: tip-bot for Borislav Petkov @ 2019-02-25 22:43 UTC (permalink / raw) To: linux-tip-commits Cc: tobin, jannh, linux-kernel, tglx, peterz, bp, torvalds, x86, luto, mingo, hpa Commit-ID: 2e7614c0736de93c8796bb2d58debb8871a59db8 Gitweb: https://git.kernel.org/tip/2e7614c0736de93c8796bb2d58debb8871a59db8 Author: Borislav Petkov <bp@suse.de> AuthorDate: Mon, 25 Feb 2019 20:08:27 +0100 Committer: Borislav Petkov <bp@suse.de> CommitDate: Mon, 25 Feb 2019 23:13:05 +0100 x86/uaccess: Remove unused __addr_ok() macro This was caught while staring at the whole {set,get}_fs() machinery. It's last user, the 32-bit version of strnlen_user() went away with 5723aa993d83 ("x86: use the new generic strnlen_user() function") so drop it. No functional changes. Signed-off-by: Borislav Petkov <bp@suse.de> Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: Andy Lutomirski <luto@kernel.org> Cc: Jann Horn <jannh@google.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: the arch/x86 maintainers <x86@kernel.org> Cc: "Tobin C. Harding" <tobin@kernel.org> Link: https://lkml.kernel.org/r/20190225191109.7671-1-bp@alien8.de --- arch/x86/include/asm/uaccess.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h index a77445d1b034..ec8d36f04786 100644 --- a/arch/x86/include/asm/uaccess.h +++ b/arch/x86/include/asm/uaccess.h @@ -35,10 +35,7 @@ static inline void set_fs(mm_segment_t fs) } #define segment_eq(a, b) ((a).seg == (b).seg) - #define user_addr_max() (current->thread.addr_limit.seg) -#define __addr_ok(addr) \ - ((unsigned long __force)(addr) < user_addr_max()) /* * Test whether a block of memory is a valid user space address. ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-03-27 13:15 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-02-25 19:11 [PATCH] x86/uaccess: Remove unused __addr_ok() macro Borislav Petkov 2019-02-25 19:20 ` Linus Torvalds 2019-02-25 19:42 ` Borislav Petkov 2019-02-25 21:08 ` Joe Perches 2019-03-04 6:47 ` Christian Kujau 2019-03-27 13:15 ` Borislav Petkov 2019-02-25 22:43 ` [tip:x86/cleanups] " tip-bot for Borislav Petkov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox