ソースを参照

[CIFS] Missing part of previous patch

Signed-off-by: Steve French <sfrench@us.ibm.com>
Steve French 19 年 前
コミット
c119b87d59
2 ファイル変更3 行追加0 行削除
  1. 2 0
      fs/cifs/file.c
  2. 1 0
      fs/cifs/inode.c

+ 2 - 0
fs/cifs/file.c

@@ -489,8 +489,10 @@ int cifs_close(struct inode *inode, struct file *file)
 					the struct would be in each open file,
 					the struct would be in each open file,
 					but this should give enough time to 
 					but this should give enough time to 
 					clear the socket */
 					clear the socket */
+					write_unlock(&file->f_owner.lock);
 					cERROR(1,("close with pending writes"));
 					cERROR(1,("close with pending writes"));
 					msleep(timeout);
 					msleep(timeout);
+					write_lock(&file->f_owner.lock);
 					timeout *= 4;
 					timeout *= 4;
 				} 
 				} 
 				write_unlock(&file->f_owner.lock);
 				write_unlock(&file->f_owner.lock);

+ 1 - 0
fs/cifs/inode.c

@@ -279,6 +279,7 @@ static int get_sfu_uid_mode(struct inode * inode,
 		return (int)rc;
 		return (int)rc;
 	else if (rc > 3) {
 	else if (rc > 3) {
 		mode = le32_to_cpu(*((__le32 *)ea_value));
 		mode = le32_to_cpu(*((__le32 *)ea_value));
+		inode->i_mode &= ~SFBITS_MASK; 
 		cFYI(1,("special bits 0%o org mode 0%o", mode, inode->i_mode));
 		cFYI(1,("special bits 0%o org mode 0%o", mode, inode->i_mode));
 		inode->i_mode = (mode &  SFBITS_MASK) | inode->i_mode;
 		inode->i_mode = (mode &  SFBITS_MASK) | inode->i_mode;
 		cFYI(1,("special mode bits 0%o", mode));
 		cFYI(1,("special mode bits 0%o", mode));