diff options
-rw-r--r-- | fs/cifs/file.c | 25 | ||||
-rw-r--r-- | fs/cifs/ioctl.c | 4 |
2 files changed, 11 insertions, 18 deletions
diff --git a/fs/cifs/file.c b/fs/cifs/file.c index ae82159cf7fa..5d06eb3078de 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c | |||
@@ -956,6 +956,7 @@ cifs_update_eof(struct cifsInodeInfo *cifsi, loff_t offset, | |||
956 | ssize_t cifs_user_write(struct file *file, const char __user *write_data, | 956 | ssize_t cifs_user_write(struct file *file, const char __user *write_data, |
957 | size_t write_size, loff_t *poffset) | 957 | size_t write_size, loff_t *poffset) |
958 | { | 958 | { |
959 | struct inode *inode = file->f_path.dentry->d_inode; | ||
959 | int rc = 0; | 960 | int rc = 0; |
960 | unsigned int bytes_written = 0; | 961 | unsigned int bytes_written = 0; |
961 | unsigned int total_written; | 962 | unsigned int total_written; |
@@ -963,7 +964,7 @@ ssize_t cifs_user_write(struct file *file, const char __user *write_data, | |||
963 | struct cifsTconInfo *pTcon; | 964 | struct cifsTconInfo *pTcon; |
964 | int xid, long_op; | 965 | int xid, long_op; |
965 | struct cifsFileInfo *open_file; | 966 | struct cifsFileInfo *open_file; |
966 | struct cifsInodeInfo *cifsi = CIFS_I(file->f_path.dentry->d_inode); | 967 | struct cifsInodeInfo *cifsi = CIFS_I(inode); |
967 | 968 | ||
968 | cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); | 969 | cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); |
969 | 970 | ||
@@ -1029,21 +1030,17 @@ ssize_t cifs_user_write(struct file *file, const char __user *write_data, | |||
1029 | 1030 | ||
1030 | cifs_stats_bytes_written(pTcon, total_written); | 1031 | cifs_stats_bytes_written(pTcon, total_written); |
1031 | 1032 | ||
1032 | /* since the write may have blocked check these pointers again */ | ||
1033 | if ((file->f_path.dentry) && (file->f_path.dentry->d_inode)) { | ||
1034 | struct inode *inode = file->f_path.dentry->d_inode; | ||
1035 | /* Do not update local mtime - server will set its actual value on write | 1033 | /* Do not update local mtime - server will set its actual value on write |
1036 | * inode->i_ctime = inode->i_mtime = | 1034 | * inode->i_ctime = inode->i_mtime = |
1037 | * current_fs_time(inode->i_sb);*/ | 1035 | * current_fs_time(inode->i_sb);*/ |
1038 | if (total_written > 0) { | 1036 | if (total_written > 0) { |
1039 | spin_lock(&inode->i_lock); | 1037 | spin_lock(&inode->i_lock); |
1040 | if (*poffset > file->f_path.dentry->d_inode->i_size) | 1038 | if (*poffset > inode->i_size) |
1041 | i_size_write(file->f_path.dentry->d_inode, | 1039 | i_size_write(inode, *poffset); |
1042 | *poffset); | 1040 | spin_unlock(&inode->i_lock); |
1043 | spin_unlock(&inode->i_lock); | ||
1044 | } | ||
1045 | mark_inode_dirty_sync(file->f_path.dentry->d_inode); | ||
1046 | } | 1041 | } |
1042 | mark_inode_dirty_sync(inode); | ||
1043 | |||
1047 | FreeXid(xid); | 1044 | FreeXid(xid); |
1048 | return total_written; | 1045 | return total_written; |
1049 | } | 1046 | } |
diff --git a/fs/cifs/ioctl.c b/fs/cifs/ioctl.c index 077bf756f342..2fa22f20cfc5 100644 --- a/fs/cifs/ioctl.c +++ b/fs/cifs/ioctl.c | |||
@@ -63,8 +63,6 @@ long cifs_ioctl(struct file *filep, unsigned int command, unsigned long arg) | |||
63 | #ifdef CONFIG_CIFS_POSIX | 63 | #ifdef CONFIG_CIFS_POSIX |
64 | case FS_IOC_GETFLAGS: | 64 | case FS_IOC_GETFLAGS: |
65 | if (CIFS_UNIX_EXTATTR_CAP & caps) { | 65 | if (CIFS_UNIX_EXTATTR_CAP & caps) { |
66 | if (pSMBFile == NULL) | ||
67 | break; | ||
68 | rc = CIFSGetExtAttr(xid, tcon, pSMBFile->netfid, | 66 | rc = CIFSGetExtAttr(xid, tcon, pSMBFile->netfid, |
69 | &ExtAttrBits, &ExtAttrMask); | 67 | &ExtAttrBits, &ExtAttrMask); |
70 | if (rc == 0) | 68 | if (rc == 0) |
@@ -80,8 +78,6 @@ long cifs_ioctl(struct file *filep, unsigned int command, unsigned long arg) | |||
80 | rc = -EFAULT; | 78 | rc = -EFAULT; |
81 | break; | 79 | break; |
82 | } | 80 | } |
83 | if (pSMBFile == NULL) | ||
84 | break; | ||
85 | /* rc= CIFSGetExtAttr(xid,tcon,pSMBFile->netfid, | 81 | /* rc= CIFSGetExtAttr(xid,tcon,pSMBFile->netfid, |
86 | extAttrBits, &ExtAttrMask);*/ | 82 | extAttrBits, &ExtAttrMask);*/ |
87 | } | 83 | } |