X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fia64%2Fsn%2Fkernel%2Fsn2%2Fsn_proc_fs.c;fp=arch%2Fia64%2Fsn%2Fkernel%2Fsn2%2Fsn_proc_fs.c;h=c686d9c12f7b1dc3c66b49f72acbd128466339bb;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=43ddc2eccb965bd3c71d372e1afc6c53505babc4;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/arch/ia64/sn/kernel/sn2/sn_proc_fs.c b/arch/ia64/sn/kernel/sn2/sn_proc_fs.c index 43ddc2ecc..c686d9c12 100644 --- a/arch/ia64/sn/kernel/sn2/sn_proc_fs.c +++ b/arch/ia64/sn/kernel/sn2/sn_proc_fs.c @@ -5,6 +5,7 @@ * * Copyright (C) 2000-2005 Silicon Graphics, Inc. All rights reserved. */ +#include #ifdef CONFIG_PROC_FS #include @@ -92,22 +93,19 @@ static int coherence_id_open(struct inode *inode, struct file *file) static struct proc_dir_entry *sn_procfs_create_entry(const char *name, struct proc_dir_entry *parent, int (*openfunc)(struct inode *, struct file *), - int (*releasefunc)(struct inode *, struct file *), - ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *)) + int (*releasefunc)(struct inode *, struct file *)) { struct proc_dir_entry *e = create_proc_entry(name, 0444, parent); if (e) { - struct file_operations *f; - - f = kzalloc(sizeof(*f), GFP_KERNEL); - if (f) { - f->open = openfunc; - f->read = seq_read; - f->llseek = seq_lseek; - f->release = releasefunc; - f->write = write; - e->proc_fops = f; + e->proc_fops = (struct file_operations *)kmalloc( + sizeof(struct file_operations), GFP_KERNEL); + if (e->proc_fops) { + memset(e->proc_fops, 0, sizeof(struct file_operations)); + e->proc_fops->open = openfunc; + e->proc_fops->read = seq_read; + e->proc_fops->llseek = seq_lseek; + e->proc_fops->release = releasefunc; } } @@ -121,29 +119,31 @@ extern int sn_topology_release(struct inode *, struct file *); void register_sn_procfs(void) { static struct proc_dir_entry *sgi_proc_dir = NULL; + struct proc_dir_entry *e; BUG_ON(sgi_proc_dir != NULL); if (!(sgi_proc_dir = proc_mkdir("sgi_sn", NULL))) return; sn_procfs_create_entry("partition_id", sgi_proc_dir, - partition_id_open, single_release, NULL); + partition_id_open, single_release); sn_procfs_create_entry("system_serial_number", sgi_proc_dir, - system_serial_number_open, single_release, NULL); + system_serial_number_open, single_release); sn_procfs_create_entry("licenseID", sgi_proc_dir, - licenseID_open, single_release, NULL); + licenseID_open, single_release); - sn_procfs_create_entry("sn_force_interrupt", sgi_proc_dir, - sn_force_interrupt_open, single_release, - sn_force_interrupt_write_proc); + e = sn_procfs_create_entry("sn_force_interrupt", sgi_proc_dir, + sn_force_interrupt_open, single_release); + if (e) + e->proc_fops->write = sn_force_interrupt_write_proc; sn_procfs_create_entry("coherence_id", sgi_proc_dir, - coherence_id_open, single_release, NULL); + coherence_id_open, single_release); sn_procfs_create_entry("sn_topology", sgi_proc_dir, - sn_topology_open, sn_topology_release, NULL); + sn_topology_open, sn_topology_release); } #endif /* CONFIG_PROC_FS */