Do we need to free MDL manually?

Today I read the source code of WDDK 7600.1(swapBuffers.c) and found something strange.
In SwapPreReadBuffers(…) it calls IoAllocateMdl and MmBuildMdlForNonPagedPool to build a MDL, but in SwapPostReadBuffers(…) and SwapPostReadBuffersWhenSafe(…) it doesn’t calls IoFreeMdl to free the MDL it allocated.
I think it should free the MDL it allocated by calling IoFreeMdl, isn’t it?

u don’t need to do that, the filter manager will free the MDL unless u call FltRetainSwappedBufferMdlAddress!

Thanks for your response, I get it :slight_smile: