From: Willem Riede It should reenable local interrupts before sleeping. --- drivers/ide/ide-tape.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN drivers/ide/ide-tape.c~ide-tape-locking-fix drivers/ide/ide-tape.c --- 25/drivers/ide/ide-tape.c~ide-tape-locking-fix 2004-02-15 17:27:55.000000000 -0800 +++ 25-akpm/drivers/ide/ide-tape.c 2004-02-15 17:27:55.000000000 -0800 @@ -3212,7 +3212,7 @@ static void idetape_wait_for_request (id #endif /* IDETAPE_DEBUG_BUGS */ rq->waiting = &wait; tape->waiting = &wait; - spin_unlock(&tape->spinlock); + spin_unlock_irq(&tape->spinlock); wait_for_completion(&wait); /* The stage and its struct request have been deallocated */ tape->waiting = NULL; _