diff options
Diffstat (limited to 'fs/cifs/file.c')
-rw-r--r-- | fs/cifs/file.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 0aac824371a5..ff14d14903a0 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c | |||
@@ -310,18 +310,19 @@ int cifs_open(struct inode *inode, struct file *file) | |||
310 | /* time to set mode which we can not set earlier due to | 310 | /* time to set mode which we can not set earlier due to |
311 | problems creating new read-only files */ | 311 | problems creating new read-only files */ |
312 | if (pTcon->unix_ext) { | 312 | if (pTcon->unix_ext) { |
313 | CIFSSMBUnixSetPerms(xid, pTcon, full_path, | 313 | struct cifs_unix_set_info_args args = { |
314 | inode->i_mode, | 314 | .mode = inode->i_mode, |
315 | (__u64)-1, (__u64)-1, 0 /* dev */, | 315 | .uid = NO_CHANGE_64, |
316 | .gid = NO_CHANGE_64, | ||
317 | .ctime = NO_CHANGE_64, | ||
318 | .atime = NO_CHANGE_64, | ||
319 | .mtime = NO_CHANGE_64, | ||
320 | .device = 0, | ||
321 | }; | ||
322 | CIFSSMBUnixSetInfo(xid, pTcon, full_path, &args, | ||
316 | cifs_sb->local_nls, | 323 | cifs_sb->local_nls, |
317 | cifs_sb->mnt_cifs_flags & | 324 | cifs_sb->mnt_cifs_flags & |
318 | CIFS_MOUNT_MAP_SPECIAL_CHR); | 325 | CIFS_MOUNT_MAP_SPECIAL_CHR); |
319 | } else { | ||
320 | /* BB implement via Windows security descriptors eg | ||
321 | CIFSSMBWinSetPerms(xid, pTcon, full_path, mode, | ||
322 | -1, -1, local_nls); | ||
323 | in the meantime could set r/o dos attribute when | ||
324 | perms are eg: mode & 0222 == 0 */ | ||
325 | } | 326 | } |
326 | } | 327 | } |
327 | 328 | ||
@@ -1280,7 +1281,7 @@ retry: | |||
1280 | 1281 | ||
1281 | if (first < 0) | 1282 | if (first < 0) |
1282 | lock_page(page); | 1283 | lock_page(page); |
1283 | else if (TestSetPageLocked(page)) | 1284 | else if (!trylock_page(page)) |
1284 | break; | 1285 | break; |
1285 | 1286 | ||
1286 | if (unlikely(page->mapping != mapping)) { | 1287 | if (unlikely(page->mapping != mapping)) { |