changeset 10644:7fee69b6853b

6885480 flash player hangs after 6885023
author Garrett D'Amore <Garrett.Damore@Sun.COM>
date Thu, 24 Sep 2009 13:34:13 -0700
parents 055841657e62
children f0fd61da7838
files usr/src/uts/common/io/audio/impl/audio_sun.c
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/io/audio/impl/audio_sun.c	Thu Sep 24 13:37:08 2009 -0700
+++ b/usr/src/uts/common/io/audio/impl/audio_sun.c	Thu Sep 24 13:34:13 2009 -0700
@@ -1014,7 +1014,7 @@
 
 	mutex_enter(&dc->dc_lock);
 	while (((eof = list_head(&dc->dc_eofcnt)) != NULL) &&
-	    (eof->tail < tail)) {
+	    (eof->tail <= tail)) {
 		list_remove(&dc->dc_eofcnt, eof);
 		kmem_free(eof, sizeof (*eof));
 		eofs++;
@@ -1344,6 +1344,11 @@
 	while ((mp = getq(rq)) != NULL) {
 
 		if ((queclass(mp) != QPCTL) && (!canputnext(rq))) {
+			/*
+			 * Put it back in the queue so we can apply
+			 * backpressure properly.
+			 */
+			(void) putbq(rq, mp);
 			return;
 		}
 		putnext(rq, mp);
@@ -1457,7 +1462,7 @@
 	NULL,	/* drain */
 	devaudioctl_wput,
 	NULL,
-	NULL,
+	devaudio_rsrv
 };
 
 void