It is missing an up() on an error path.


 sound/core/pcm_native.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN sound/core/pcm_native.c~pcm_native-deadlock-fix sound/core/pcm_native.c
--- 25/sound/core/pcm_native.c~pcm_native-deadlock-fix	2003-10-19 15:58:31.000000000 -0700
+++ 25-akpm/sound/core/pcm_native.c	2003-10-19 15:58:48.000000000 -0700
@@ -1982,9 +1982,9 @@ int snd_pcm_open(struct inode *inode, st
 		}
 	}
 	remove_wait_queue(&pcm->open_wait, &wait);
+	up(&pcm->open_mutex);
 	if (err < 0)
 		goto __error;
-	up(&pcm->open_mutex);
 	return err;
 
       __error:

_