: Fix cleanup in ipt_recent
PATCH 5/8 : Fix cleanup in ipt_recent
# This is a BitKeeper generated diff -Nru style patch. #
# ChangeSet
# 2005/03/04 00:48:18+01:00 [email protected]
# [NETFILTER]: Fix cleanup in ipt_recent
#
# Backport from 2.6, original patch from Rusty:
#
# When ipt_register_match() fails, ipt_recent doesn't remove its proc
# entry. Found by nfsim.
#
# Signed-off-by: Patrick McHardy <[email protected]>
#
# net/ipv4/netfilter/ipt_recent.c # 2005/03/04 00:48:16+01:00 [email protected] +5 -2 # [NETFILTER]: Fix cleanup in ipt_recent # # Backport from 2.6, original patch from Rusty: # # When ipt_register_match() fails, ipt_recent doesn't remove its proc # entry. Found by nfsim. # # Signed-off-by: Patrick McHardy <[email protected]> # diff -Nru a/net/ipv4/netfilter/ipt_recent.c b/net/ipv4/netfilter/ipt_recent.c --- a/net/ipv4/netfilter/ipt_recent.c 2005-03-04 01:52:05 +01:00 +++ b/net/ipv4/netfilter/ipt_recent.c 2005-03-04 01:52:05 +01:00 @@ -962,7 +962,7 @@ /* Kernel module initialization. */ static int __init init(void) { - int count; + int err, count;
printk(version);
#ifdef CONFIG_PROC_FS
@@ -986,7 +986,10 @@
if(debug) printk(KERN_INFO RECENT_NAME ": ip_list_hash_size: %d\n",ip_list_hash_size);
#endif
- return ipt_register_match(&recent_match);
+ err = ipt_register_match(&recent_match);
+ if (err)
+ remove_proc_entry("ipt_recent", proc_net);
+ return err;
}
/* Kernel module destruction. */