[ATM]: 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>
This commit is contained in:
parent
ed2b5b474e
commit
16e297b358
|
@ -742,9 +742,9 @@ static int __init br2684_init(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
struct proc_dir_entry *p;
|
struct proc_dir_entry *p;
|
||||||
if ((p = create_proc_entry("br2684", 0, atm_proc_root)) == NULL)
|
p = proc_create("br2684", 0, atm_proc_root, &br2684_proc_ops);
|
||||||
|
if (p == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
p->proc_fops = &br2684_proc_ops;
|
|
||||||
#endif
|
#endif
|
||||||
register_atm_ioctl(&br2684_ioctl_ops);
|
register_atm_ioctl(&br2684_ioctl_ops);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -962,9 +962,7 @@ static int __init atm_clip_init(void)
|
||||||
{
|
{
|
||||||
struct proc_dir_entry *p;
|
struct proc_dir_entry *p;
|
||||||
|
|
||||||
p = create_proc_entry("arp", S_IRUGO, atm_proc_root);
|
p = proc_create("arp", S_IRUGO, atm_proc_root, &arp_seq_fops);
|
||||||
if (p)
|
|
||||||
p->proc_fops = &arp_seq_fops;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1249,9 +1249,7 @@ static int __init lane_module_init(void)
|
||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
struct proc_dir_entry *p;
|
struct proc_dir_entry *p;
|
||||||
|
|
||||||
p = create_proc_entry("lec", S_IRUGO, atm_proc_root);
|
p = proc_create("lec", S_IRUGO, atm_proc_root, &lec_seq_fops);
|
||||||
if (p)
|
|
||||||
p->proc_fops = &lec_seq_fops;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
register_atm_ioctl(&lane_ioctl_ops);
|
register_atm_ioctl(&lane_ioctl_ops);
|
||||||
|
|
|
@ -276,12 +276,11 @@ int mpc_proc_init(void)
|
||||||
{
|
{
|
||||||
struct proc_dir_entry *p;
|
struct proc_dir_entry *p;
|
||||||
|
|
||||||
p = create_proc_entry(STAT_FILE_NAME, 0, atm_proc_root);
|
p = proc_create(STAT_FILE_NAME, 0, atm_proc_root, &mpc_file_operations);
|
||||||
if (!p) {
|
if (!p) {
|
||||||
printk(KERN_ERR "Unable to initialize /proc/atm/%s\n", STAT_FILE_NAME);
|
printk(KERN_ERR "Unable to initialize /proc/atm/%s\n", STAT_FILE_NAME);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
p->proc_fops = &mpc_file_operations;
|
|
||||||
p->owner = THIS_MODULE;
|
p->owner = THIS_MODULE;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -435,11 +435,11 @@ int atm_proc_dev_register(struct atm_dev *dev)
|
||||||
goto err_out;
|
goto err_out;
|
||||||
sprintf(dev->proc_name,"%s:%d",dev->type, dev->number);
|
sprintf(dev->proc_name,"%s:%d",dev->type, dev->number);
|
||||||
|
|
||||||
dev->proc_entry = create_proc_entry(dev->proc_name, 0, atm_proc_root);
|
dev->proc_entry = proc_create(dev->proc_name, 0, atm_proc_root,
|
||||||
|
&proc_atm_dev_ops);
|
||||||
if (!dev->proc_entry)
|
if (!dev->proc_entry)
|
||||||
goto err_free_name;
|
goto err_free_name;
|
||||||
dev->proc_entry->data = dev;
|
dev->proc_entry->data = dev;
|
||||||
dev->proc_entry->proc_fops = &proc_atm_dev_ops;
|
|
||||||
dev->proc_entry->owner = THIS_MODULE;
|
dev->proc_entry->owner = THIS_MODULE;
|
||||||
return 0;
|
return 0;
|
||||||
err_free_name:
|
err_free_name:
|
||||||
|
@ -492,10 +492,10 @@ int __init atm_proc_init(void)
|
||||||
for (e = atm_proc_ents; e->name; e++) {
|
for (e = atm_proc_ents; e->name; e++) {
|
||||||
struct proc_dir_entry *dirent;
|
struct proc_dir_entry *dirent;
|
||||||
|
|
||||||
dirent = create_proc_entry(e->name, S_IRUGO, atm_proc_root);
|
dirent = proc_create(e->name, S_IRUGO,
|
||||||
|
atm_proc_root, e->proc_fops);
|
||||||
if (!dirent)
|
if (!dirent)
|
||||||
goto err_out_remove;
|
goto err_out_remove;
|
||||||
dirent->proc_fops = e->proc_fops;
|
|
||||||
dirent->owner = THIS_MODULE;
|
dirent->owner = THIS_MODULE;
|
||||||
e->dirent = dirent;
|
e->dirent = dirent;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue