changeset 12828:2ad74dc35297

6967941 BAD TRAP: type=8 (#df Double fault) during reboot on x86 32bit systems in snv_144
author Sowmini Varadhan <Sowmini.Varadhan@oracle.COM>
date Tue, 13 Jul 2010 15:48:42 -0400
parents 3cc06341886c
children 0336e913b141
files usr/src/uts/common/io/dld/dld_str.c usr/src/uts/common/io/mac/mac_protect.c usr/src/uts/common/sys/mac_provider.h
diffstat 3 files changed, 7 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/io/dld/dld_str.c	Tue Jul 13 12:06:07 2010 -0700
+++ b/usr/src/uts/common/io/dld/dld_str.c	Tue Jul 13 15:48:42 2010 -0400
@@ -1725,7 +1725,7 @@
 	mblk_t		*mp;
 	dl_notify_ind_t	*dlip;
 	size_t		mp_size;
-	mac_protect_t	mrp;
+	mac_protect_t	*mrp;
 
 	if (!(dsp->ds_notifications & DL_NOTE_ALLOWED_IPS))
 		return;
@@ -1734,7 +1734,7 @@
 	if ((mp = mexchange(dsp->ds_wq, NULL, mp_size, M_PROTO, 0)) == NULL)
 		return;
 
-	mac_protect_get(dsp->ds_mh, &mrp);
+	mrp = mac_protect_get(dsp->ds_mh);
 	bzero(mp->b_rptr, mp_size);
 	dlip = (dl_notify_ind_t *)mp->b_rptr;
 	dlip->dl_primitive = DL_NOTIFY_IND;
@@ -1742,7 +1742,7 @@
 	dlip->dl_data = 0;
 	dlip->dl_addr_offset = sizeof (dl_notify_ind_t);
 	dlip->dl_addr_length = sizeof (mac_protect_t);
-	bcopy(&mrp, mp->b_rptr + sizeof (dl_notify_ind_t),
+	bcopy(mrp, mp->b_rptr + sizeof (dl_notify_ind_t),
 	    sizeof (mac_protect_t));
 
 	qreply(dsp->ds_wq, mp);
--- a/usr/src/uts/common/io/mac/mac_protect.c	Tue Jul 13 12:06:07 2010 -0700
+++ b/usr/src/uts/common/io/mac/mac_protect.c	Tue Jul 13 15:48:42 2010 -0400
@@ -2295,10 +2295,10 @@
 	return (B_FALSE);
 }
 
-void
-mac_protect_get(mac_handle_t mh, mac_protect_t *mrp)
+mac_protect_t *
+mac_protect_get(mac_handle_t mh)
 {
 	mac_impl_t *mip = (mac_impl_t *)mh;
 
-	*mrp = mip->mi_resource_props.mrp_protect;
+	return (&mip->mi_resource_props.mrp_protect);
 }
--- a/usr/src/uts/common/sys/mac_provider.h	Tue Jul 13 12:06:07 2010 -0700
+++ b/usr/src/uts/common/sys/mac_provider.h	Tue Jul 13 15:48:42 2010 -0400
@@ -455,7 +455,7 @@
 /*
  * Driver interface functions.
  */
-extern void			mac_protect_get(mac_handle_t, mac_protect_t *);
+extern mac_protect_t		*mac_protect_get(mac_handle_t);
 extern void			mac_sdu_get(mac_handle_t, uint_t *, uint_t *);
 extern int			mac_maxsdu_update(mac_handle_t, uint_t);