diff mbox

ARM: make kuser helpers depend on MMU

Message ID 1415045178-4673-1-git-send-email-nathan_lynch@mentor.com (mailing list archive)
State New, archived
Headers show

Commit Message

Nathan Lynch Nov. 3, 2014, 8:06 p.m. UTC
The kuser helpers page is not set up on non-MMU systems, so it does
not make sense to allow CONFIG_KUSER_HELPERS to be enabled when
CONFIG_MMU=n.  Allowing it to be set on !MMU results in an oops in
set_tls (used in execve and the arm_syscall trap handler):

Unhandled exception: IPSR = 00000005 LR = fffffff1
CPU: 0 PID: 1 Comm: swapper Not tainted 3.18.0-rc1-00041-ga30465a #216
task: 8b838000 ti: 8b82a000 task.ti: 8b82a000
PC is at flush_thread+0x32/0x40
LR is at flush_thread+0x21/0x40
pc : [<8f00157a>]    lr : [<8f001569>]    psr: 4100000b
sp : 8b82be20  ip : 00000000  fp : 8b83c000
r10: 00000001  r9 : 88018c84  r8 : 8bb85000
r7 : 8b838000  r6 : 00000000  r5 : 8bb77400  r4 : 8b82a000
r3 : ffff0ff0  r2 : 8b82a000  r1 : 00000000  r0 : 88020354
xPSR: 4100000b
CPU: 0 PID: 1 Comm: swapper Not tainted 3.18.0-rc1-00041-ga30465a #216
[<8f002bc1>] (unwind_backtrace) from [<8f002033>] (show_stack+0xb/0xc)
[<8f002033>] (show_stack) from [<8f00265b>] (__invalid_entry+0x4b/0x4c)

As best I can tell this issue existed for the set_tls ARM syscall
before commit fbfb872f5f41 "ARM: 8148/1: flush TLS and thumbee
register state during exec" consolidated the TLS manipulation code
into the set_tls helper function, but now that we're using it to flush
register state during execve, !MMU users encounter the oops at the
first exec.

Prevent CONFIG_MMU=n configurations from enabling
CONFIG_KUSER_HELPERS.

Fixes: fbfb872f5f41 ARM: 8148/1: flush TLS and thumbee register state during exec

Signed-off-by: Nathan Lynch <nathan_lynch@mentor.com>
Reported-by: Stefan Agner <stefan@agner.ch>
Cc: stable@vger.kernel.org
---
 arch/arm/mm/Kconfig | 1 +
 1 file changed, 1 insertion(+)

Comments

Uwe Kleine-König Nov. 4, 2014, 8:03 a.m. UTC | #1
On Mon, Nov 03, 2014 at 02:06:18PM -0600, Nathan Lynch wrote:
> The kuser helpers page is not set up on non-MMU systems, so it does
> not make sense to allow CONFIG_KUSER_HELPERS to be enabled when
> CONFIG_MMU=n.  Allowing it to be set on !MMU results in an oops in
> set_tls (used in execve and the arm_syscall trap handler):
> 
> Unhandled exception: IPSR = 00000005 LR = fffffff1
> CPU: 0 PID: 1 Comm: swapper Not tainted 3.18.0-rc1-00041-ga30465a #216
> task: 8b838000 ti: 8b82a000 task.ti: 8b82a000
> PC is at flush_thread+0x32/0x40
> LR is at flush_thread+0x21/0x40
> pc : [<8f00157a>]    lr : [<8f001569>]    psr: 4100000b
> sp : 8b82be20  ip : 00000000  fp : 8b83c000
> r10: 00000001  r9 : 88018c84  r8 : 8bb85000
> r7 : 8b838000  r6 : 00000000  r5 : 8bb77400  r4 : 8b82a000
> r3 : ffff0ff0  r2 : 8b82a000  r1 : 00000000  r0 : 88020354
> xPSR: 4100000b
> CPU: 0 PID: 1 Comm: swapper Not tainted 3.18.0-rc1-00041-ga30465a #216
> [<8f002bc1>] (unwind_backtrace) from [<8f002033>] (show_stack+0xb/0xc)
> [<8f002033>] (show_stack) from [<8f00265b>] (__invalid_entry+0x4b/0x4c)
> 
> As best I can tell this issue existed for the set_tls ARM syscall
> before commit fbfb872f5f41 "ARM: 8148/1: flush TLS and thumbee
> register state during exec" consolidated the TLS manipulation code
> into the set_tls helper function, but now that we're using it to flush
> register state during execve, !MMU users encounter the oops at the
> first exec.
> 
> Prevent CONFIG_MMU=n configurations from enabling
> CONFIG_KUSER_HELPERS.
> 
> Fixes: fbfb872f5f41 ARM: 8148/1: flush TLS and thumbee register state during exec
minor nit: Usual syntax here is:

	Fixes: fbfb872f5f41 ("ARM: 8148/1: flush ...")

> 
and it's part of the s-o-b area, so no empty line

> Signed-off-by: Nathan Lynch <nathan_lynch@mentor.com>
> Reported-by: Stefan Agner <stefan@agner.ch>
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

Thanks
Uwe
Nathan Lynch Nov. 4, 2014, 5:23 p.m. UTC | #2
On 11/04/2014 02:03 AM, Uwe Kleine-König wrote:
> On Mon, Nov 03, 2014 at 02:06:18PM -0600, Nathan Lynch wrote:
>>
>> Prevent CONFIG_MMU=n configurations from enabling
>> CONFIG_KUSER_HELPERS.
>>
>> Fixes: fbfb872f5f41 ARM: 8148/1: flush TLS and thumbee register state during exec
> minor nit: Usual syntax here is:
> 
> 	Fixes: fbfb872f5f41 ("ARM: 8148/1: flush ...")
> 
>>
> and it's part of the s-o-b area, so no empty line

Indeed, will fix before sending to the patch tracker.

> 
>> Signed-off-by: Nathan Lynch <nathan_lynch@mentor.com>
>> Reported-by: Stefan Agner <stefan@agner.ch>
> Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

Thanks.
diff mbox

Patch

diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig
index ae69809a9e47..7eb94e6fc376 100644
--- a/arch/arm/mm/Kconfig
+++ b/arch/arm/mm/Kconfig
@@ -798,6 +798,7 @@  config NEED_KUSER_HELPERS
 
 config KUSER_HELPERS
 	bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS
+	depends on MMU
 	default y
 	help
 	  Warning: disabling this option may break user programs.