I might be wrong but keep looking at the code in <linux/list.h> and I see that macros like list_for_each_entry_safe starting from the second element:
#define list_for_each_entry_safe(pos, n, head, member) \
for (pos = list_entry((head)->next, typeof(*pos), member), \
n = list_entry(pos->member.next, typeof(*pos), member); \
&pos->member != (head); \
pos = n, n = list_entry(n->member.next, typeof(*n), member))
Notice that the loop starts with pos = list_entry((head)->next.
I know this may sound nit-picky but in a "true" foreach like in Python you start with the first or 0th element.
Is there any particular reason that this convention is violated in the kernel ? Is it for performance reasons ?
Or is my understanding of the above code completely wrong ?