Check if the free block is != Free list head.
prev being null is not your problem.
1) YOUR FREE_LIST_HEAD is not being set to NULL when you have run out of blocks.
2) You may be potentially corrupting the free blocks next and prev when manipulating your allocated blocks. Check your size parameters.