Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5268df2ead6def933ace27ab4d46f67d2989b905
Commit:     5268df2ead6def933ace27ab4d46f67d2989b905
Parent:     3a9f462f6d07ab6f26a347120e173e945139befd
Author:     Steve French <[EMAIL PROTECTED]>
AuthorDate: Fri Apr 6 19:28:16 2007 +0000
Committer:  Steve French <[EMAIL PROTECTED]>
CommitDate: Fri Apr 6 19:28:16 2007 +0000

    [CIFS] Add write perm for usr to file on windows should remove r/o dos attr
    
    Remove read only dos attribute on chmod when adding any write permission 
(ie on any of
    user/group/other (not all of user/group/other ie  0222) when
    mounted to windows.
    
    Suggested by: Urs Fleisch
    
    Signed-off-by: Urs Fleisch <[EMAIL PROTECTED]>
    Signed-off-by: Steve French <[EMAIL PROTECTED]>
---
 fs/cifs/CHANGES |    5 ++++-
 fs/cifs/inode.c |   22 +++++++++++-----------
 2 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 5d1f487..f75bdc6 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -9,7 +9,10 @@ from read-only back to read-write, reflect this change in 
default file mode
 (we had been leaving a file's mode read-only until the inode were reloaded).
 Allow setting of attribute back to ATTR_NORMAL (removing readonly dos attribute
 when archive dos attribute not set and we are changing mode back to writeable
-on server which does not support the Unix Extensions).
+on server which does not support the Unix Extensions).  Remove read only dos
+attribute on chmod when adding any write permission (ie on any of
+user/group/other (not all of user/group/other ie  0222) when
+mounted to windows.
 
 Version 1.47
 ------------
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index f414526..eeea337 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -1339,17 +1339,17 @@ int cifs_setattr(struct dentry *direntry, struct iattr 
*attrs)
                                        cpu_to_le32(cifsInode->cifsAttrs |
                                                    ATTR_READONLY);
                        }
-               } else if ((mode & S_IWUGO) == S_IWUGO) {
-                       if (cifsInode->cifsAttrs & ATTR_READONLY) {
-                               set_dosattr = TRUE;
-                               time_buf.Attributes =
-                                       cpu_to_le32(cifsInode->cifsAttrs &
-                                                   (~ATTR_READONLY));
-                               /* Windows ignores set to zero */
-                               if(time_buf.Attributes == 0)
-                                       time_buf.Attributes |= 
-                                               cpu_to_le32(ATTR_NORMAL);
-                       }
+               } else if (cifsInode->cifsAttrs & ATTR_READONLY) {
+                       /* If file is readonly on server, we would
+                       not be able to write to it - so if any write
+                       bit is enabled for user or group or other we
+                       need to at least try to remove r/o dos attr */
+                       set_dosattr = TRUE;
+                       time_buf.Attributes = cpu_to_le32(cifsInode->cifsAttrs &
+                                           (~ATTR_READONLY));
+                       /* Windows ignores set to zero */
+                       if(time_buf.Attributes == 0)
+                               time_buf.Attributes |= cpu_to_le32(ATTR_NORMAL);
                }
                /* BB to be implemented -
                   via Windows security descriptors or streams */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to