Messages in this thread Patch in this message | | | Date | Sat, 22 Nov 2003 18:13:45 +1100 | Subject | [I810_AUDIO] 2/x: Fix wait queue race in drain_dac | From | Herbert Xu <> |
| |
Hi:
This patch fixes the value of swptr in case of an underrun/overrun.
Overruns/underruns probably won't occur at all when the driver is fixed properly, but this doesn't hurt. -- Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ ) Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt Index: kernel-source-2.4/drivers/sound/i810_audio.c =================================================================== RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.4/drivers/sound/i810_audio.c,v retrieving revision 1.9 diff -u -r1.9 i810_audio.c --- kernel-source-2.4/drivers/sound/i810_audio.c 22 Nov 2003 07:05:27 -0000 1.9 +++ kernel-source-2.4/drivers/sound/i810_audio.c 22 Nov 2003 07:11:25 -0000 @@ -1445,8 +1445,8 @@ } continue; } - swptr = dmabuf->swptr; cnt = i810_get_available_read_data(state); + swptr = dmabuf->swptr; // this is to make the copy_to_user simpler below if(cnt > (dmabuf->dmasize - swptr)) cnt = dmabuf->dmasize - swptr; @@ -1589,8 +1589,8 @@ continue; } - swptr = dmabuf->swptr; cnt = i810_get_free_write_space(state); + swptr = dmabuf->swptr; /* Bound the maximum size to how much we can copy to the * dma buffer before we hit the end. If we have more to * copy then it will get done in a second pass of this | |