drivers: use non-racy method for proc entries creation (2)
Use proc_create()/proc_create_data() to make sure that ->proc_fops and ->data be setup before gluing PDE to main tree. Signed-off-by: Denis V. Lunev <den@openvz.org> Cc: Greg Kroah-Hartman <gregkh@suse.de> Cc: Alexey Dobriyan <adobriyan@gmail.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Peter Osterlund <petero2@telia.com> Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Cc: Dmitry Torokhov <dtor@mail.ru> Cc: Neil Brown <neilb@suse.de> Cc: Mauro Carvalho Chehab <mchehab@infradead.org> Cc: Bjorn Helgaas <bjorn.helgaas@hp.com> Cc: Alessandro Zummo <a.zummo@towertech.it> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
这个提交包含在:
@@ -85,6 +85,7 @@ static ssize_t isapnp_proc_bus_read(struct file *file, char __user * buf,
|
||||
}
|
||||
|
||||
static const struct file_operations isapnp_proc_bus_file_operations = {
|
||||
.owner = THIS_MODULE,
|
||||
.llseek = isapnp_proc_bus_lseek,
|
||||
.read = isapnp_proc_bus_read,
|
||||
};
|
||||
@@ -102,12 +103,10 @@ static int isapnp_proc_attach_device(struct pnp_dev *dev)
|
||||
return -ENOMEM;
|
||||
}
|
||||
sprintf(name, "%02x", dev->number);
|
||||
e = dev->procent = create_proc_entry(name, S_IFREG | S_IRUGO, de);
|
||||
e = dev->procent = proc_create_data(name, S_IFREG | S_IRUGO, de,
|
||||
&isapnp_proc_bus_file_operations, dev);
|
||||
if (!e)
|
||||
return -ENOMEM;
|
||||
e->proc_fops = &isapnp_proc_bus_file_operations;
|
||||
e->owner = THIS_MODULE;
|
||||
e->data = dev;
|
||||
e->size = 256;
|
||||
return 0;
|
||||
}
|
||||
|
在新工单中引用
屏蔽一个用户