summaryrefslogtreecommitdiff
path: root/drivers/scsi
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-03-31 15:00:32 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2014-03-31 15:00:32 -0700
commitf24279172d610e5ab2b8a2e290490213b0622453 (patch)
treebb1b00b29bd70de8297b9e3d9dfe69a119e533a5 /drivers/scsi
parent1f8c538ed6a3323b06c2459e9ca36e0ae8bb0ebc (diff)
parent50be9eba831da114e1979726f4119d342698e651 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k
Pull m68k updates from Geert Uytterhoeven. * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k: m68k: Update defconfigs for v3.14-rc1 [SCSI] atari_scsi: Fix sleep_on race m68k: head.S - Remove bogus L prefix in comment m68k: Remove dead code m68k: Remove CONSOLE_PENGUIN macro, adopt CONFIG_LOGO
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/atari_scsi.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/scsi/atari_scsi.c b/drivers/scsi/atari_scsi.c
index a3e6c8a3ff0f..296c936cc03c 100644
--- a/drivers/scsi/atari_scsi.c
+++ b/drivers/scsi/atari_scsi.c
@@ -90,6 +90,7 @@
#include <linux/init.h>
#include <linux/nvram.h>
#include <linux/bitops.h>
+#include <linux/wait.h>
#include <asm/setup.h>
#include <asm/atarihw.h>
@@ -549,8 +550,10 @@ static void falcon_get_lock(void)
local_irq_save(flags);
- while (!in_irq() && falcon_got_lock && stdma_others_waiting())
- sleep_on(&falcon_fairness_wait);
+ wait_event_cmd(falcon_fairness_wait,
+ in_interrupt() || !falcon_got_lock || !stdma_others_waiting(),
+ local_irq_restore(flags),
+ local_irq_save(flags));
while (!falcon_got_lock) {
if (in_irq())
@@ -562,7 +565,10 @@ static void falcon_get_lock(void)
falcon_trying_lock = 0;
wake_up(&falcon_try_wait);
} else {
- sleep_on(&falcon_try_wait);
+ wait_event_cmd(falcon_try_wait,
+ falcon_got_lock && !falcon_trying_lock,
+ local_irq_restore(flags),
+ local_irq_save(flags));
}
}