diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-03-31 15:00:32 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-03-31 15:00:32 -0700 |
commit | f24279172d610e5ab2b8a2e290490213b0622453 (patch) | |
tree | bb1b00b29bd70de8297b9e3d9dfe69a119e533a5 /drivers/scsi | |
parent | 1f8c538ed6a3323b06c2459e9ca36e0ae8bb0ebc (diff) | |
parent | 50be9eba831da114e1979726f4119d342698e651 (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.c | 12 |
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)); } } |