[CIFS] Missing part of previous patch
authorSteve French <sfrench@us.ibm.com>
Fri, 18 Nov 2005 20:27:27 +0000 (12:27 -0800)
committerSteve French <sfrench@us.ibm.com>
Fri, 18 Nov 2005 20:27:27 +0000 (12:27 -0800)
Signed-off-by: Steve French <sfrench@us.ibm.com>
fs/cifs/file.c
fs/cifs/inode.c

index da4f5e10b3cc0f84c922660e89745bb14631cff1..14a1c72ced92e1cc98024494ea217b2a7413921d 100644 (file)
@@ -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);
index ffc7305841b3c27173f8890a82ad5c9a5c5666c6..f0586c0d7bdbb0c18d2a2bd44b833583308c3cba 100644 (file)
@@ -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));