From c119b87d596cdd99ac20095ae2ae90b525418605 Mon Sep 17 00:00:00 2001
From: Steve French <sfrench@us.ibm.com>
Date: Fri, 18 Nov 2005 12:27:27 -0800
Subject: [CIFS] Missing part of previous patch

Signed-off-by: Steve French <sfrench@us.ibm.com>
---
 fs/cifs/file.c  | 2 ++
 fs/cifs/inode.c | 1 +
 2 files changed, 3 insertions(+)

diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index da4f5e10b3cc..14a1c72ced92 100644
--- a/fs/cifs/file.c
+++ b/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,
 					but this should give enough time to 
 					clear the socket */
+					write_unlock(&file->f_owner.lock);
 					cERROR(1,("close with pending writes"));
 					msleep(timeout);
+					write_lock(&file->f_owner.lock);
 					timeout *= 4;
 				} 
 				write_unlock(&file->f_owner.lock);
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index ffc7305841b3..f0586c0d7bdb 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -279,6 +279,7 @@ static int get_sfu_uid_mode(struct inode * inode,
 		return (int)rc;
 	else if (rc > 3) {
 		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));
 		inode->i_mode = (mode &  SFBITS_MASK) | inode->i_mode;
 		cFYI(1,("special mode bits 0%o", mode));
-- 
cgit v1.2.3