I guess your question is what's the value of "ef->any.prev[0]->any.next" after asimcard_ef_remove() gets called. The value is "ef->any.next".

Following reason is why I am using SimFileRec** for 'prev':
1. We don't need a bidirectional linklist.
2. It doesn't need many checking when maintaining list.
    (For example, removing the first node and other node can both share the same flow, ....)
    (I learned this cool way in telephony/remote_call.c)

Thanks :)