Prima di tutto devi passare alla funzione la lista da deallocare. Puoi inoltre fare restituire alla liista un puntatore a nodo in modo da poter avere nel main un modo per accertarti che la lista sia stata deallocata completamente.
typedef struct nodo_lista{
int inf;
struct nodo_lista *next;
}nodo;
nodo *cancella(nodo *tua_lista){
nodo *inizio;
if(tua_lista == NULL) return tua_lista; //se lista è già = a NULL non c'è nulla da deallocare
while(tua_lista != NULL){
inizio = tua_lista; //inizio punta alla testa della lista
tua_lista = tua_lista->next; /*mando avanti la testa così il nodo puntato da inizio non farà piu parte della lista*/
free(inizio); //dealloco la ex-testa
}
return tua_lista;
}
Se tutto è andato a buon fine nel main tua lista deve valere NULL.
In questo modo dovrebbe andare. Prova e fammi sapere. Ciao!!