kfree_rcu(old, rcu);
                        nl_table[sk->sk_protocol].module = NULL;
                        nl_table[sk->sk_protocol].bind = NULL;
-                       nl_table[sk->sk_protocol].compare = NULL;
                        nl_table[sk->sk_protocol].flags = 0;
                        nl_table[sk->sk_protocol].registered = 0;
                }
                rcu_assign_pointer(nl_table[unit].listeners, listeners);
                nl_table[unit].cb_mutex = cb_mutex;
                nl_table[unit].module = module;
-               nl_table[unit].compare = netlink_compare;
                if (cfg) {
                        nl_table[unit].bind = cfg->bind;
                        nl_table[unit].flags = cfg->flags;
                hash->shift = 0;
                hash->mask = 0;
                hash->rehash_time = jiffies;
+
+               nl_table[i].compare = netlink_compare;
        }
 
        netlink_add_usersock_entry();