patch-2.4.0-test11 linux/fs/proc/inode.c
Next file: linux/fs/proc/proc_misc.c
Previous file: linux/fs/proc/generic.c
Back to the patch index
Back to the overall index
- Lines: 45
- Date:
Fri Nov 17 16:51:47 2000
- Orig file:
v2.4.0-test10/linux/fs/proc/inode.c
- Orig date:
Wed Jun 21 07:25:17 2000
diff -u --recursive --new-file v2.4.0-test10/linux/fs/proc/inode.c linux/fs/proc/inode.c
@@ -25,7 +25,7 @@
struct proc_dir_entry * de_get(struct proc_dir_entry *de)
{
if (de)
- de->count++;
+ atomic_inc(&de->count);
return de;
}
@@ -34,20 +34,21 @@
*/
void de_put(struct proc_dir_entry *de)
{
- if (de) {
- lock_kernel(); /* FIXME: count should be atomic_t */
- if (!de->count) {
+ if (de) {
+ lock_kernel();
+ if (!atomic_read(&de->count)) {
printk("de_put: entry %s already free!\n", de->name);
+ unlock_kernel();
return;
}
- if (!--de->count) {
+ if (atomic_dec_and_test(&de->count)) {
if (de->deleted) {
printk("de_put: deferred delete of %s\n",
de->name);
free_proc_entry(de);
}
- }
+ }
unlock_kernel();
}
}
@@ -139,7 +140,7 @@
#if 1
/* shouldn't ever happen */
if (de && de->deleted)
-printk("proc_iget: using deleted entry %s, count=%d\n", de->name, de->count);
+printk("proc_iget: using deleted entry %s, count=%d\n", de->name, atomic_read(&de->count));
#endif
inode = iget(sb, ino);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)