Say I have declared a pointer to a struct and assign it with malloc() using this definition
typedef struct node { int info; struct node *next; } NODE
You release neither node1 nor node2. You release the memory they point to.
node1
node2
With that in mind, it should become clear why you should only call free once
free