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

Commit 4fb8d027 authored by Li Zhong's avatar Li Zhong Committed by Benjamin Herrenschmidt
Browse files

powerpc: Fix Oops in rtas_stop_self()



commit 41dd03a9 may cause Oops in rtas_stop_self().

The reason is that the rtas_args was moved into stack space. For a box
with more that 4GB RAM, the stack could easily be outside 32bit range,
but RTAS is 32bit.

So the patch moves rtas_args away from stack by adding static before
it.

Signed-off-by: default avatarLi Zhong <zhong@linux.vnet.ibm.com>
Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
Cc: stable@vger.kernel.org # 3.14+
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 28ea3c75
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -88,13 +88,14 @@ void set_default_offline_state(int cpu)

static void rtas_stop_self(void)
{
	struct rtas_args args = {
		.token = cpu_to_be32(rtas_stop_self_token),
	static struct rtas_args args = {
		.nargs = 0,
		.nret = 1,
		.rets = &args.args[0],
	};

	args.token = cpu_to_be32(rtas_stop_self_token);

	local_irq_disable();

	BUG_ON(rtas_stop_self_token == RTAS_UNKNOWN_SERVICE);