why tcphdr&optionlen continuous procedure need jude M_LOOP flag with IP6_EXTHDR_CHECK in tcp_input.c

in tcp_input file when process tcphdr&optionlen continuous (for processing option check):
1.For ipv4, here we call m_pullup;
2.For ipv6, here we call IP6_EXTHDR_CHECK, in this macro it jude M_LOOP. In this case, when packets were received, it calls m_pullup just when M_LOOP is set.M_LOOP is set when loopback and output packets case.
so, my question is:why it is different between ipv4 and ipv6?why jude M_LOOP flag here?
Did you see the comment
 KAME requires drivers
 * to store incoming data into one internal mbuf or one or more external

Knowing nothing about the issue,