This elliminates infamous race during module loading when one could lookup
proc entry without proc_fops assigned.
Signed-off-by: Denis V. Lunev <den@openvz.org>
---
net/ipv4/netfilter/ip_queue.c | 8 +++-----
net/ipv4/netfilter/ipt_CLUSTERIP.c | 5 ++---
net/ipv4/netfilter/ipt_recent.c | 3 +--
.../netfilter/nf_conntrack_l3proto_ipv4_compat.c | 7 ++-----
net/ipv6/netfilter/ip6_queue.c | 8 +++-----
net/netfilter/nf_conntrack_standalone.c | 9 +++------
net/netfilter/nf_log.c | 8 ++------
net/netfilter/nf_queue.c | 7 ++-----
net/netfilter/nfnetlink_log.c | 9 ++-------
net/netfilter/nfnetlink_queue.c | 9 ++-------
net/netfilter/xt_hashlimit.c | 16 ++++++++--------
11 files changed, 30 insertions(+), 59 deletions(-)
diff --git a/net/ipv4/netfilter/ip_queue.c b/net/ipv4/netfilter/ip_queue.c
index 500998a..719be29 100644
--- a/net/ipv4/netfilter/ip_queue.c
+++ b/net/ipv4/netfilter/ip_queue.c
@@ -588,11 +588,9 @@ static int __init ip_queue_init(void)
}
#ifdef CONFIG_PROC_FS
- proc = create_proc_entry(IPQ_PROC_FS_NAME, 0, init_net.proc_net);
- if (proc) {
- proc->owner = THIS_MODULE;
- proc->proc_fops = &ip_queue_proc_fops;
- } else {
+ proc = proc_create(IPQ_PROC_FS_NAME, 0, init_net.proc_net,
+ &ip_queue_proc_fops);
+ if (!proc) {
printk(KERN_ERR "ip_queue: failed to create proc entry\n");
goto cleanup_ipqnl;
}
diff --git a/net/ipv4/netfilter/ipt_CLUSTERIP.c b/net/ipv4/netfilter/ipt_CLUSTERIP.c
index 1b10f36..965b08a 100644
--- a/net/ipv4/netfilter/ipt_CLUSTERIP.c
+++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c
@@ -167,14 +167,13 @@ clusterip_config_init(struct ipt_clusterip_tgt_info *i, __be32 ip,
/* create proc dir entry */
sprintf(buffer, "%u.%u.%u.%u", NIPQUAD(ip));
- c->pde = create_...