patch-2.4.0-test3 linux/drivers/isdn/hysdn/hysdn_procfs.c
Next file: linux/drivers/isdn/hysdn/hysdn_proclog.c
Previous file: linux/drivers/isdn/hysdn/hysdn_procconf.c
Back to the patch index
Back to the overall index
- Lines: 67
- Date:
Sat Jul 8 19:26:12 2000
- Orig file:
v2.4.0-test2/linux/drivers/isdn/hysdn/hysdn_procfs.c
- Orig date:
Thu Mar 2 14:36:22 2000
diff -u --recursive --new-file v2.4.0-test2/linux/drivers/isdn/hysdn/hysdn_procfs.c linux/drivers/isdn/hysdn/hysdn_procfs.c
@@ -33,6 +33,7 @@
#include <linux/poll.h>
#include <linux/proc_fs.h>
#include <linux/pci.h>
+#include <linux/smp_lock.h>
#include "hysdn_defs.h"
@@ -198,7 +199,7 @@
struct procdata *pd;
ulong flags;
- MOD_INC_USE_COUNT; /* lock module */
+ lock_kernel();
card = card_root;
while (card) {
pd = card->procfs;
@@ -207,7 +208,7 @@
card = card->next; /* search next entry */
}
if (!card) {
- MOD_DEC_USE_COUNT; /* unlock module */
+ unlock_kernel();
return (-ENODEV); /* device is unknown/invalid */
}
filep->private_data = card; /* remember our own card */
@@ -215,7 +216,7 @@
if ((filep->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_WRITE) {
/* write only access -> boot pof data */
if (pof_boot_open(card)) {
- MOD_DEC_USE_COUNT; /* unlock module */
+ unlock_kernel();
return (-EPERM); /* no permission this time */
}
} else if ((filep->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ) {
@@ -231,9 +232,10 @@
restore_flags(flags);
} else { /* simultaneous read/write access forbidden ! */
- MOD_DEC_USE_COUNT; /* unlock module */
+ unlock_kernel();
return (-EPERM); /* no permission this time */
}
+ unlock_kernel();
return (0);
} /* hysdn_log_open */
@@ -295,7 +297,6 @@
}
} /* read access */
- MOD_DEC_USE_COUNT;
return (retval);
} /* hysdn_log_close */
@@ -437,8 +438,10 @@
memset(pd, 0, sizeof(struct procdata));
sprintf(pd->log_name, "%s%d", PROC_LOG_BASENAME, card->myid);
- if ((pd->log = create_proc_entry(pd->log_name, S_IFREG | S_IRUGO | S_IWUSR, hysdn_proc_entry)) != NULL)
+ if ((pd->log = create_proc_entry(pd->log_name, S_IFREG | S_IRUGO | S_IWUSR, hysdn_proc_entry)) != NULL) {
pd->log->proc_fops = &log_fops; /* set new operations table */
+ pd->log->owner = THIS_MODULE;
+ }
init_waitqueue_head(&(pd->rd_queue));
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)