unsigned int expect_new;
        unsigned int expect_create;
        unsigned int expect_delete;
+       unsigned int search_restart;
 };
 
 /* call to create an explicit dependency on nf_conntrack. */
 
        const struct ip_conntrack_stat *st = v;
 
        if (v == SEQ_START_TOKEN) {
-               seq_printf(seq, "entries  searched found new invalid ignore delete delete_list insert insert_failed drop early_drop icmp_error  expect_new expect_create expect_delete\n");
+               seq_printf(seq, "entries  searched found new invalid ignore delete delete_list insert insert_failed drop early_drop icmp_error  expect_new expect_create expect_delete search_restart\n");
                return 0;
        }
 
        seq_printf(seq, "%08x  %08x %08x %08x %08x %08x %08x %08x "
-                       "%08x %08x %08x %08x %08x  %08x %08x %08x \n",
+                       "%08x %08x %08x %08x %08x  %08x %08x %08x %08x\n",
                   nr_conntracks,
                   st->searched,
                   st->found,
 
                   st->expect_new,
                   st->expect_create,
-                  st->expect_delete
+                  st->expect_delete,
+                  st->search_restart
                );
        return 0;
 }
 
         * not the expected one, we must restart lookup.
         * We probably met an item that was moved to another chain.
         */
-       if (get_nulls_value(n) != hash)
+       if (get_nulls_value(n) != hash) {
+               NF_CT_STAT_INC(net, search_restart);
                goto begin;
+       }
        local_bh_enable();
 
        return NULL;
 
        const struct ip_conntrack_stat *st = v;
 
        if (v == SEQ_START_TOKEN) {
-               seq_printf(seq, "entries  searched found new invalid ignore delete delete_list insert insert_failed drop early_drop icmp_error  expect_new expect_create expect_delete\n");
+               seq_printf(seq, "entries  searched found new invalid ignore delete delete_list insert insert_failed drop early_drop icmp_error  expect_new expect_create expect_delete search_restart\n");
                return 0;
        }
 
        seq_printf(seq, "%08x  %08x %08x %08x %08x %08x %08x %08x "
-                       "%08x %08x %08x %08x %08x  %08x %08x %08x \n",
+                       "%08x %08x %08x %08x %08x  %08x %08x %08x %08x\n",
                   nr_conntracks,
                   st->searched,
                   st->found,
 
                   st->expect_new,
                   st->expect_create,
-                  st->expect_delete
+                  st->expect_delete,
+                  st->search_restart
                );
        return 0;
 }