diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c
index 2195eb0..5416185 100644
--- a/net/netfilter/xt_hashlimit.c
+++ b/net/netfilter/xt_hashlimit.c
@@ -46,6 +46,7 @@ struct hashlimit_net {
         struct hlist_head       htables;
         struct proc_dir_entry   *ipt_hashlimit;
         struct proc_dir_entry   *ip6t_hashlimit;
+       int                     clean;
  };

  static int hashlimit_net_id;
@@ -319,7 +320,8 @@ static void htable_destroy(struct 
xt_hashlimit_htable *hinfo)
                 parent = hashlimit_net->ipt_hashlimit;
         else
                 parent = hashlimit_net->ip6t_hashlimit;
-       remove_proc_entry(hinfo->pde->name, parent);
+       if(!hashlimit_net->clean)
+               remove_proc_entry(hinfo->pde->name, parent);
         htable_selective_cleanup(hinfo, select_all);
         vfree(hinfo);
