From: Dipankar Sarma 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; _