]> git.neil.brown.name Git - history.git/commitdiff
[SPARC64]: Fix wakeup races in power.c, with help from Andrew Morton.
authorDavid S. Miller <davem@nuts.davemloft.net>
Fri, 30 Jan 2004 03:21:01 +0000 (19:21 -0800)
committerDavid S. Miller <davem@nuts.davemloft.net>
Fri, 30 Jan 2004 03:21:01 +0000 (19:21 -0800)
arch/sparc64/kernel/power.c

index b53ecb88a780c66973543a92e3d0f527fda8257d..bebec2e393989d1d9c368f7eb27099975fa0d70d 100644 (file)
@@ -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;