From: Jaroslav Kysela <perex@suse.cz>

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;
 }

_