summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorjesusm <none@none>2007-04-27 08:49:43 -0700
committerjesusm <none@none>2007-04-27 08:49:43 -0700
commit2d52664353b360bce2f87239f9d1342d66b7c9cd (patch)
treee0d59d1d7a1dc0b6fa47beab52a718d60330c3ae /usr/src
parent91785ffff883655a89eb843ed89bcd24d717e320 (diff)
downloadillumos-gate-2d52664353b360bce2f87239f9d1342d66b7c9cd.tar.gz
6474597 su:asy_probe() doesn't ddi_regs_map_free on failure
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/sun4/io/su_driver.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/usr/src/uts/sun4/io/su_driver.c b/usr/src/uts/sun4/io/su_driver.c
index f1bf8befb8..191f5001fe 100644
--- a/usr/src/uts/sun4/io/su_driver.c
+++ b/usr/src/uts/sun4/io/su_driver.c
@@ -340,7 +340,6 @@ asyprobe(dev_info_t *devi)
attr.devacc_attr_version = DDI_DEVICE_ATTR_V0;
attr.devacc_attr_endian_flags = DDI_STRUCTURE_LE_ACC;
attr.devacc_attr_dataorder = DDI_STRICTORDER_ACC;
-
if (ddi_regs_map_setup(devi, SU_REGISTER_FILE_NO, (caddr_t *)&addr,
SU_REGOFFSET, SU_REGISTER_LEN, &attr, &handle) != DDI_SUCCESS) {
cmn_err(CE_WARN, "asyprobe regs map setup failed");
@@ -356,8 +355,11 @@ asyprobe(dev_info_t *devi)
* Ser. int. uses bits 0,1,2; FIFO uses 3,6,7; 4,5 wired low.
* If bit 4 or 5 appears on inb() ISR, board is not there.
*/
- if (ddi_get8(handle, addr+ISR) & 0x30)
+ if (ddi_get8(handle, addr+ISR) & 0x30) {
+ ddi_regs_map_free(&handle);
return (DDI_PROBE_FAILURE);
+ }
+
instance = ddi_get_instance(devi);
if (max_asy_instance < instance)
max_asy_instance = instance;