From: Steve French Date: Fri, 18 Nov 2005 20:27:27 +0000 (-0800) Subject: [CIFS] Missing part of previous patch X-Git-Tag: v2.6.15-rc3~138^2~3 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c119b87d596cdd99ac20095ae2ae90b525418605;p=linux-2.6 [CIFS] Missing part of previous patch Signed-off-by: Steve French --- diff --git a/fs/cifs/file.c b/fs/cifs/file.c index da4f5e10b3..14a1c72ced 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 ffc7305841..f0586c0d7b 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));