From: Jaroslav Kysela Fix scheduling-in-hard-irq problem. sound/isa/gus/gus_pcm.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff -puN sound/isa/gus/gus_pcm.c~alsa-gus-scheduling-in-interrupt-fix sound/isa/gus/gus_pcm.c --- 25/sound/isa/gus/gus_pcm.c~alsa-gus-scheduling-in-interrupt-fix 2003-12-20 01:52:51.000000000 -0800 +++ 25-akpm/sound/isa/gus/gus_pcm.c 2003-12-20 01:52:51.000000000 -0800 @@ -334,9 +334,11 @@ static int snd_gf1_pcm_poke_block(snd_gu snd_gf1_poke(gus, pos++, *buf++ ^ invert); } } - schedule_timeout(1); - if (signal_pending(current)) - return -EAGAIN; + if (count > 0 && !in_interrupt()) { + schedule_timeout(1); + if (signal_pending(current)) + return -EAGAIN; + } } return 0; } _