patch-2.0.34 linux/fs/smbfs/inode.c

Next file: linux/fs/smbfs/proc.c
Previous file: linux/fs/smbfs/dir.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.0.33/linux/fs/smbfs/inode.c linux/fs/smbfs/inode.c
@@ -95,11 +95,10 @@
 {
 	struct smb_server *server = SMB_SERVER(inode);
 	struct smb_inode_info *info = SMB_INOP(inode);
-	struct smb_dirent *finfo;
 	__u32 mtime = inode->i_mtime;
 
 	if (inode->i_count > 1) {
-		printk("smb_put_inode: in use device %s, inode %ld count=%d\n",
+		printk("smb_put_inode: in use device %s, inode %ld count=%ld\n",
 			kdevname(inode->i_dev), inode->i_ino, inode->i_count);
 		return;
 	}
@@ -107,6 +106,12 @@
 	if (S_ISDIR(inode->i_mode))
 	{
 		smb_invalid_dir_cache(inode->i_ino);
+	} else
+	{
+		/*
+		 * Clear the length so the info structure can't be found.
+		 */
+		info->finfo.len = 0;
 	}
 	clear_inode(inode);
 
@@ -116,13 +121,13 @@
 	 */
 	inode->i_count++;
 	if (info) {
-		finfo = &info->finfo;
-		if (finfo->opened != 0)
+		if (info->finfo.opened != 0)
 		{
-			if (smb_proc_close(server, finfo->fileid, mtime))
+			if (smb_proc_close(server, info->finfo.fileid, mtime))
 			{
 				/* We can't do anything but complain. */
-				printk("smb_put_inode: could not close\n");
+				printk("smb_put_inode: could not close %s\n",
+					info->finfo.name);
 			}
 		}
 		smb_free_inode_info(info);

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov