--- seq_memory.c	2003-05-30 15:40:18.000000000 +0200
+++ seq_memory.c.old	2003-05-30 15:42:46.000000000 +0200
@@ -1,3 +1,4 @@
+#define __NO_VERSION__
 /*
  *  ALSA sequencer Memory Manager
  *  Copyright (c) 1998 by Frank van de Pol <fvdpol@home.nl>
@@ -235,7 +236,18 @@
 	while (pool->free == NULL && ! nonblock && ! pool->closing) {
 
 		spin_unlock(&pool->lock);
+#ifdef LINUX_2_2
+		/* change semaphore to allow other clients
+		   to access device file */
+		if (file)
+			up(&semaphore_of(file));
+#endif
 		interruptible_sleep_on(&pool->output_sleep);
+#ifdef LINUX_2_2
+		/* restore semaphore again */
+		if (file)
+			down(&semaphore_of(file));
+#endif
 		spin_lock(&pool->lock);
 		/* interrupted? */
 		if (signal_pending(current)) {
