Memory must be allocated and freed from the same pool. It is not legal to allocate memory from one pool and free it to another. These memory pools are struct malloc_type and typically denoted with M_SOMENAME in device and network drivers. -Matt