소스 검색

[IRDA]: 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>
Wang Chen 17 년 전
부모
커밋
5e47879f49
3개의 변경된 파일9개의 추가작업 그리고 11개의 파일을 삭제
  1. 5 3
      net/irda/ircomm/ircomm_core.c
  2. 1 3
      net/irda/irlan/irlan_common.c
  3. 3 5
      net/irda/irproc.c

+ 5 - 3
net/irda/ircomm/ircomm_core.c

@@ -76,9 +76,11 @@ static int __init ircomm_init(void)
 
 
 #ifdef CONFIG_PROC_FS
 #ifdef CONFIG_PROC_FS
 	{ struct proc_dir_entry *ent;
 	{ struct proc_dir_entry *ent;
-	ent = create_proc_entry("ircomm", 0, proc_irda);
-	if (ent)
-		ent->proc_fops = &ircomm_proc_fops;
+	ent = proc_create("ircomm", 0, proc_irda, &ircomm_proc_fops);
+	if (!ent) {
+		printk(KERN_ERR "ircomm_init: can't create /proc entry!\n");
+		return -ENODEV;
+	}
 	}
 	}
 #endif /* CONFIG_PROC_FS */
 #endif /* CONFIG_PROC_FS */
 
 

+ 1 - 3
net/irda/irlan/irlan_common.c

@@ -128,13 +128,11 @@ static int __init irlan_init(void)
 
 
 #ifdef CONFIG_PROC_FS
 #ifdef CONFIG_PROC_FS
 	{ struct proc_dir_entry *proc;
 	{ struct proc_dir_entry *proc;
-	proc = create_proc_entry("irlan", 0, proc_irda);
+	proc = proc_create("irlan", 0, proc_irda, &irlan_fops);
 	if (!proc) {
 	if (!proc) {
 		printk(KERN_ERR "irlan_init: can't create /proc entry!\n");
 		printk(KERN_ERR "irlan_init: can't create /proc entry!\n");
 		return -ENODEV;
 		return -ENODEV;
 	}
 	}
-
-	proc->proc_fops = &irlan_fops;
 	}
 	}
 #endif /* CONFIG_PROC_FS */
 #endif /* CONFIG_PROC_FS */
 
 

+ 3 - 5
net/irda/irproc.c

@@ -72,11 +72,9 @@ void __init irda_proc_register(void)
 		return;
 		return;
 	proc_irda->owner = THIS_MODULE;
 	proc_irda->owner = THIS_MODULE;
 
 
-	for (i=0; i<ARRAY_SIZE(irda_dirs); i++) {
-		d = create_proc_entry(irda_dirs[i].name, 0, proc_irda);
-		if (d)
-			d->proc_fops = irda_dirs[i].fops;
-	}
+	for (i = 0; i < ARRAY_SIZE(irda_dirs); i++)
+		d = proc_create(irda_dirs[i].name, 0, proc_irda,
+				irda_dirs[i].fops);
 }
 }
 
 
 /*
 /*