Pasando el puntero de la estructura para funcionar en c

Tengo un problema con pasar un puntero a una estructura a una función. Mi código es esencialmente lo que se muestra a continuación. Después de llamar a modify_item en la función principal, cosas == NULL. Quiero que las cosas sean un indicador de una estructura de elemento con un elemento igual a 5. ¿Qué estoy haciendo mal?

<code>void modify_item(struct item *s){
   struct item *retVal = malloc(sizeof(struct item));
   retVal->element = 5;
   s = retVal;
}

int main(){
   struct item *stuff = NULL;
   modify_item(stuff); //After this call, stuff == NULL, why?
}
</code>

Respuestas a la pregunta(2)

Su respuesta a la pregunta