Q: Assigning void pointer to itself Recently I've faced with a strange code snippet. It's a part of memory pool code written in C, which ( of course ) intensively uses address arithmetic. 
Omitting redundant details, I added some comments instead of them:
void *head;
/* some memory allocation stuff, including assigning  allocated memory address to head */

/* allocating some memory pages */

/* OK, now allocation stuff is finished. head pointer still contains valid address */

head = *(void **)head;

What is head = *(void **)head;? We assign head to itself? Why? And for what? I understand this line as "we are treating head as pointer to pointer to void, i.e. address of void pointer. Then we're dereferencing it, so next we'll get pointer to void. And next assigning this pointer to head ( head to itself ?? )". 
Obviously, I'm wrong, because it's production code example that works successfully. But it doesn't make any sense for me. What the trick is it, guys?
P.S. Unfortunately, I can't paste full snippet due to NDA. But there is nothing special there anymore.

A: head = *(void**)head; assigns a pointer (void*) that head points to to head itself.

A: if head points to a linked list structure and the first element of the linked list is the pointer to the next element, your construct is equivalent to
head = head->next;

when the structures aren't opaque.
