
From: Dipankar Sarma <dipankar@in.ibm.com>

Free any read channel allocated earlier if allocation of write channel
fails.



 25-akpm/sound/oss/i810_audio.c |    5 +++++
 1 files changed, 5 insertions(+)

diff -puN sound/oss/i810_audio.c~ds-13-i810-leak-fix sound/oss/i810_audio.c
--- 25/sound/oss/i810_audio.c~ds-13-i810-leak-fix	Tue Jun 10 14:55:29 2003
+++ 25-akpm/sound/oss/i810_audio.c	Tue Jun 10 14:55:29 2003
@@ -2493,6 +2493,11 @@ found_virt:
 	}
 	if(file->f_mode & FMODE_WRITE) {
 		if((dmabuf->write_channel = card->alloc_pcm_channel(card)) == NULL) {
+			/* free any read channel allocated earlier */
+			if(file->f_mode & FMODE_READ)
+				card->free_pcm_channel(card,
+						dmabuf->read_channel->num);
+
 			kfree (card->states[i]);
 			card->states[i] = NULL;;
 			return -EBUSY;

_
