From 6f7d8d3501e8e86f3004b42926b240936e1e75f1 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Thu, 29 Jan 2004 19:21:01 -0800 Subject: [PATCH] [SPARC64]: Fix wakeup races in power.c, with help from Andrew Morton. --- arch/sparc64/kernel/power.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/sparc64/kernel/power.c b/arch/sparc64/kernel/power.c index b53ecb88a780c..bebec2e393989 100644 --- a/arch/sparc64/kernel/power.c +++ b/arch/sparc64/kernel/power.c @@ -29,8 +29,8 @@ static int button_pressed; static irqreturn_t power_handler(int irq, void *dev_id, struct pt_regs *regs) { if (button_pressed == 0) { - wake_up(&powerd_wait); button_pressed = 1; + wake_up(&powerd_wait); } /* FIXME: Check registers for status... */ @@ -86,10 +86,10 @@ again: remove_wait_queue(&powerd_wait, &wait); /* Ok, down we go... */ + button_pressed = 0; if (execve("/sbin/shutdown", argv, envp) < 0) { printk("powerd: shutdown execution failed\n"); add_wait_queue(&powerd_wait, &wait); - button_pressed = 0; goto again; } return 0; -- 2.53.0