changeset 4323:c2d671276f97

6556831 System panic when booting up with PC Card inserted
author rw148561
date Fri, 25 May 2007 06:08:28 -0700
parents 1cb616e8399f
children 696de332c6cf
files usr/src/uts/common/io/cardbus/cardbus_cfg.c usr/src/uts/common/pcmcia/nexus/pcmcia.c
diffstat 2 files changed, 3 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/io/cardbus/cardbus_cfg.c	Fri May 25 06:00:18 2007 -0700
+++ b/usr/src/uts/common/io/cardbus/cardbus_cfg.c	Fri May 25 06:08:28 2007 -0700
@@ -1233,6 +1233,7 @@
 
 	mem_request->ra_align_mask = phdl->memory_gran - 1;
 	io_request->ra_align_mask = phdl->io_gran - 1;
+	phdl->res_dip = (dev_info_t *)-1;
 
 	mem_request->ra_len += cardbus_min_spare_mem;
 	if (mem_request->ra_len) {
--- a/usr/src/uts/common/pcmcia/nexus/pcmcia.c	Fri May 25 06:00:18 2007 -0700
+++ b/usr/src/uts/common/pcmcia/nexus/pcmcia.c	Fri May 25 06:08:28 2007 -0700
@@ -4517,7 +4517,6 @@
 			ret->ra_addr_hi = 0;
 			ret->ra_addr_lo = 0;
 			ret->ra_len = 0;
-			*res_dip = (dev_info_t *)-1;
 			return (DDI_FAILURE);
 		}
 	}
@@ -4569,6 +4568,8 @@
 int
 pcmcia_ra_free(dev_info_t *dip, ra_return_t *ret, char *type)
 {
+	if (dip == (dev_info_t *)-1)
+		return (DDI_FAILURE);
 	if (ndi_ra_free(dip, (uint64_t)ret->ra_addr_lo, (uint64_t)ret->ra_len,
 	    type, NDI_RA_PASS) == NDI_SUCCESS) {
 		return (DDI_SUCCESS);