diff options
author | Wang Chen <wangchen@cn.fujitsu.com> | 2008-02-28 17:00:59 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-02-28 17:00:59 -0500 |
commit | 2ce8f047d5f3c0d782838bd2ecb6e4c440268e6d (patch) | |
tree | 8c8f667f23e194e31dd9b82acaf5e3c0aa4238f1 | |
parent | 64758bd7927be1f755e7a08edb2253d37e4b2445 (diff) |
[SUNRPC]: Use proc_create() to setup ->proc_fops first
Use proc_create() to make sure that ->proc_fops be setup before gluing
PDE to main tree.
Signed-off-by: Wang Chen <wangchen@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/sunrpc/cache.c | 14 | ||||
-rw-r--r-- | net/sunrpc/stats.c | 3 |
2 files changed, 7 insertions, 10 deletions
diff --git a/net/sunrpc/cache.c b/net/sunrpc/cache.c index 636c8e04e0be..b5f2786251b9 100644 --- a/net/sunrpc/cache.c +++ b/net/sunrpc/cache.c | |||
@@ -316,31 +316,29 @@ static int create_cache_proc_entries(struct cache_detail *cd) | |||
316 | cd->proc_ent->owner = cd->owner; | 316 | cd->proc_ent->owner = cd->owner; |
317 | cd->channel_ent = cd->content_ent = NULL; | 317 | cd->channel_ent = cd->content_ent = NULL; |
318 | 318 | ||
319 | p = create_proc_entry("flush", S_IFREG|S_IRUSR|S_IWUSR, cd->proc_ent); | 319 | p = proc_create("flush", S_IFREG|S_IRUSR|S_IWUSR, |
320 | cd->proc_ent, &cache_flush_operations); | ||
320 | cd->flush_ent = p; | 321 | cd->flush_ent = p; |
321 | if (p == NULL) | 322 | if (p == NULL) |
322 | goto out_nomem; | 323 | goto out_nomem; |
323 | p->proc_fops = &cache_flush_operations; | ||
324 | p->owner = cd->owner; | 324 | p->owner = cd->owner; |
325 | p->data = cd; | 325 | p->data = cd; |
326 | 326 | ||
327 | if (cd->cache_request || cd->cache_parse) { | 327 | if (cd->cache_request || cd->cache_parse) { |
328 | p = create_proc_entry("channel", S_IFREG|S_IRUSR|S_IWUSR, | 328 | p = proc_create("channel", S_IFREG|S_IRUSR|S_IWUSR, |
329 | cd->proc_ent); | 329 | cd->proc_ent, &cache_file_operations); |
330 | cd->channel_ent = p; | 330 | cd->channel_ent = p; |
331 | if (p == NULL) | 331 | if (p == NULL) |
332 | goto out_nomem; | 332 | goto out_nomem; |
333 | p->proc_fops = &cache_file_operations; | ||
334 | p->owner = cd->owner; | 333 | p->owner = cd->owner; |
335 | p->data = cd; | 334 | p->data = cd; |
336 | } | 335 | } |
337 | if (cd->cache_show) { | 336 | if (cd->cache_show) { |
338 | p = create_proc_entry("content", S_IFREG|S_IRUSR|S_IWUSR, | 337 | p = proc_create("content", S_IFREG|S_IRUSR|S_IWUSR, |
339 | cd->proc_ent); | 338 | cd->proc_ent, &content_file_operations); |
340 | cd->content_ent = p; | 339 | cd->content_ent = p; |
341 | if (p == NULL) | 340 | if (p == NULL) |
342 | goto out_nomem; | 341 | goto out_nomem; |
343 | p->proc_fops = &content_file_operations; | ||
344 | p->owner = cd->owner; | 342 | p->owner = cd->owner; |
345 | p->data = cd; | 343 | p->data = cd; |
346 | } | 344 | } |
diff --git a/net/sunrpc/stats.c b/net/sunrpc/stats.c index 5a16875f5ac8..c6061a4346c8 100644 --- a/net/sunrpc/stats.c +++ b/net/sunrpc/stats.c | |||
@@ -229,9 +229,8 @@ do_register(const char *name, void *data, const struct file_operations *fops) | |||
229 | rpc_proc_init(); | 229 | rpc_proc_init(); |
230 | dprintk("RPC: registering /proc/net/rpc/%s\n", name); | 230 | dprintk("RPC: registering /proc/net/rpc/%s\n", name); |
231 | 231 | ||
232 | ent = create_proc_entry(name, 0, proc_net_rpc); | 232 | ent = proc_create(name, 0, proc_net_rpc, fops); |
233 | if (ent) { | 233 | if (ent) { |
234 | ent->proc_fops = fops; | ||
235 | ent->data = data; | 234 | ent->data = data; |
236 | } | 235 | } |
237 | return ent; | 236 | return ent; |