#include <linux/idr.h>
 #include <linux/rhashtable.h>
 #include <linux/jhash.h>
+#include <linux/rculist.h>
 #include <net/net_namespace.h>
 #include <net/sock.h>
 #include <net/netlink.h>
        chain = kzalloc(sizeof(*chain), GFP_KERNEL);
        if (!chain)
                return NULL;
-       list_add_tail(&chain->list, &block->chain_list);
+       list_add_tail_rcu(&chain->list, &block->chain_list);
        mutex_init(&chain->filter_chain_lock);
        chain->block = block;
        chain->index = chain_index;
 
        ASSERT_BLOCK_LOCKED(block);
 
-       list_del(&chain->list);
+       list_del_rcu(&chain->list);
        if (!chain->index)
                block->chain0.chain = NULL;