Another BSOD on Inserting Packets in LWF

I have written some very simple code (famous last words) to modify a SYN packet coming down the tcpip stack. I create a new buffer list and store the original in the context space of the new nbl to free in my FilterSendNetBufferListsComplete routine. This seems to work sometimes. I get a blue screen on this call after traffic starts to pick up. I see that if the nbl I created is freed before other nbls queued on my pFilter, then everything works fine. If another nbl is freed before I get mine back. I get a BSOD. Do I need to wait to get my packet back from the FilterSendNetBufferLists call before another call to FilterSendNetBufferLists is made? I am new at this so I apologize for the question if it is stupid or answered before. I have looked through many of the prior posting, and the code in some of those threads is very similar to mine. Thanks.