changeset 638:e68332ad56a3 onnv_25

6260567 hci1394 fails to remove its isr before quiescing device resulting in panic on modunload 6286705 modunloads on every module panics on x86
author ap25164
date Mon, 03 Oct 2005 14:18:07 -0700
parents 3bfca5eeee8e
children c1caddacd3df
files usr/src/uts/common/io/1394/adapters/hci1394_detach.c usr/src/uts/common/io/1394/adapters/hci1394_q.c
diffstat 2 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/io/1394/adapters/hci1394_detach.c	Fri Sep 30 18:43:55 2005 -0700
+++ b/usr/src/uts/common/io/1394/adapters/hci1394_detach.c	Mon Oct 03 14:18:07 2005 -0700
@@ -20,7 +20,7 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
@@ -67,6 +67,9 @@
 		/* Don't allow the HW to generate any more interrupts */
 		hci1394_ohci_intr_master_disable(soft_state->ohci);
 
+		/* unregister interrupt handler */
+		hci1394_isr_handler_fini(soft_state);
+
 		/* don't accept anymore commands from services layer */
 		(void) hci1394_state_set(&soft_state->drvinfo,
 		    HCI1394_SHUTDOWN);
--- a/usr/src/uts/common/io/1394/adapters/hci1394_q.c	Fri Sep 30 18:43:55 2005 -0700
+++ b/usr/src/uts/common/io/1394/adapters/hci1394_q.c	Mon Oct 03 14:18:07 2005 -0700
@@ -20,8 +20,8 @@
  * CDDL HEADER END
  */
 /*
- * Copyright (c) 1999-2000 by Sun Microsystems, Inc.
- * All rights reserved.
+ * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
  */
 
 #pragma ident	"%Z%%M%	%I%	%E% SMI"
@@ -156,7 +156,9 @@
 	status = hci1394_buf_alloc(drvinfo, &parms, &data->qb_buf,
 	    &data->qb_buf_handle);
 	if (status != DDI_SUCCESS) {
-		hci1394_buf_free(&data->qb_buf_handle);
+		/* Free the allocated Descriptor buffer */
+		hci1394_buf_free(&desc->qb_buf_handle);
+
 		mutex_destroy(&q->q_mutex);
 		kmem_free(q, sizeof (hci1394_q_t));
 		*q_handle = NULL;