ddi_getlongprop(9F) allocates the memory to hold the property returned to
the called. In sun4u/io/pci/pci_pci.c the DDI_CTLOPS_NREGS and
DDI_CTLOPS_REGSIZE operations do not free the memory allocated in this
operation; see about line 361.
*(int *)result = 0;
if (ddi_getlongprop(DDI_DEV_T_NONE, rdip,
DDI_PROP_DONTPASS | DDI_PROP_CANSLEEP, "reg",
(caddr_t)&drv_regp, ®len) != DDI_SUCCESS)
return (DDI_FAILURE);
The fix is to add the following line before the
return (DDI_SUCCESS);
statement:
kmem_free(drv_regp, reglen);
return(DDI_SUCCESS);
--
Nigel Horne. Arranger, Composer, Conductor, Typesetter.
Owner of the brass band group of the Internet. ICQ#20252325