patch-2.0.14 linux/fs/open.c
Next file: linux/fs/read_write.c
Previous file: linux/drivers/sound/sys_timer.c
Back to the patch index
Back to the overall index
-  Lines: 44
-  Date:
Tue Aug 20 11:59:19 1996
-  Orig file: 
v2.0.13/linux/fs/open.c
-  Orig date: 
Sun Jul  7 20:27:04 1996
diff -u --recursive --new-file v2.0.13/linux/fs/open.c linux/fs/open.c
@@ -17,6 +17,7 @@
 #include <linux/tty.h>
 #include <linux/time.h>
 #include <linux/mm.h>
+#include <linux/file.h>
 
 #include <asm/segment.h>
 #include <asm/bitops.h>
@@ -602,6 +603,16 @@
 
 #endif
 
+void __fput(struct file *filp, struct inode *inode)
+{
+	if (filp->f_op && filp->f_op->release)
+		filp->f_op->release(inode,filp);
+	filp->f_inode = NULL;
+	if (filp->f_mode & FMODE_WRITE)
+		put_write_access(inode);
+	iput(inode);
+}
+
 int close_fp(struct file *filp)
 {
 	struct inode *inode;
@@ -613,17 +624,7 @@
 	inode = filp->f_inode;
 	if (inode)
 		locks_remove_locks(current, filp);
-	if (filp->f_count > 1) {
-		filp->f_count--;
-		return 0;
-	}
-	if (filp->f_op && filp->f_op->release)
-		filp->f_op->release(inode,filp);
-	filp->f_count--;
-	filp->f_inode = NULL;
-	if (filp->f_mode & FMODE_WRITE)
-		put_write_access(inode);
-	iput(inode);
+	fput(filp, inode);
 	return 0;
 }
 
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov