UNDI drivers transfer data in the system through memory buffers. To perform its function, the UNDI driver often allocates many buffers for data transfer. If those buffers are not tracked properly, it is possible to lose them in the shuffle, and they are not returned to the system memory management. This can cause a memory leak. When a buffer is being used (taken off the waiting queue and made active) there is a chance of losing the pointer to that buffer in the process, which again, causes a memory leak.
When transmitting, the UNDI driver must keep track of which buffers have been completed, and return those buffer addresses from the GetStatus API. This allows the top level stack to disposition the buffer (reuse or de-allocate) and not leak memory.