diff options
author | jesusm <none@none> | 2007-04-27 08:49:43 -0700 |
---|---|---|
committer | jesusm <none@none> | 2007-04-27 08:49:43 -0700 |
commit | 2d52664353b360bce2f87239f9d1342d66b7c9cd (patch) | |
tree | e0d59d1d7a1dc0b6fa47beab52a718d60330c3ae /usr/src | |
parent | 91785ffff883655a89eb843ed89bcd24d717e320 (diff) | |
download | illumos-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.c | 6 |
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; |