questa funzione mi dà un segmentation
xchè nn riesce a aggingere il coda ricorsivamente?

codice:
/* Crea elementi successivi */
hello *aggiungi(hello *p, int ins)
{
	hello *paus;
	paus = malloc(sizeof(hello));
	paus->n = ins;
	paus->next = NULL;
	if (p == NULL) {
		p->next = paus;
	}
	else {
		aggiungi(p->next, ins);
	}
	return p;
}