diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index 4f18c0e1e415..a22c667d4b46 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c @@ -647,12 +647,15 @@ destroy_conntrack(struct nf_conntrack *nfct) #ifdef CONFIG_NF_CONNTRACK_SIP_SEGMENTATION pr_debug("freeing item in the SIP list\n"); - list_for_each_safe(sip_node_list, sip_node_save_list, - &ct->sip_segment_list) { - sip_node = list_entry(sip_node_list, struct sip_list, list); - list_del(&sip_node->list); - kfree(sip_node); - } + + if (ct->sip_segment_list.next) + list_for_each_safe(sip_node_list, sip_node_save_list, + &ct->sip_segment_list) { + sip_node = list_entry(sip_node_list, + struct sip_list, list); + list_del(&sip_node->list); + kfree(sip_node); + } #endif /* Expectations will have been removed in clean_from_lists, * except TFTP can create an expectation on the first packet,