[patch 30/37] CIFS: Allow reset of file to ATTR_NORMAL when archive bit not set

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Greg KH
Date: Friday, March 30, 2007 - 2:06 pm

-stable review patch.  If anyone has any objections, please let us know.

------------------
From: Steve French <sfrench@us.ibm.com>

[CIFS] Allow reset of file to ATTR_NORMAL when archive bit not set

When a file had a dos attribute of 0x1 (readonly - but dos attribute
of archive was not set) - doing chmod 0777 or equivalent would
try to set a dos attribute of 0 (which some servers ignore)
rather than ATTR_NORMAL (0x20) which most servers accept.
Does not affect servers which support the CIFS Unix Extensions.

[<cebbert@redhat.com>: removed changelog part of patch]

Cc: Chuck Ebbert <cebbert@redhat.com>
Acked-by: Prasad Potluri <pvp@us.ibm.com>
Acked-by: Shirish Pargaonkar <shirishp@us.ibm.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>


---
 fs/cifs/inode.c |   15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -1133,6 +1133,7 @@ int cifs_setattr(struct dentry *direntry
 	struct cifsFileInfo *open_file = NULL;
 	FILE_BASIC_INFO time_buf;
 	int set_time = FALSE;
+	int set_dosattr = FALSE;
 	__u64 mode = 0xFFFFFFFFFFFFFFFFULL;
 	__u64 uid = 0xFFFFFFFFFFFFFFFFULL;
 	__u64 gid = 0xFFFFFFFFFFFFFFFFULL;
@@ -1269,15 +1270,23 @@ int cifs_setattr(struct dentry *direntry
 	else if (attrs->ia_valid & ATTR_MODE) {
 		rc = 0;
 		if ((mode & S_IWUGO) == 0) /* not writeable */ {
-			if ((cifsInode->cifsAttrs & ATTR_READONLY) == 0)
+			if ((cifsInode->cifsAttrs & ATTR_READONLY) == 0) {
+				set_dosattr = TRUE;
 				time_buf.Attributes =
 					cpu_to_le32(cifsInode->cifsAttrs |
 						    ATTR_READONLY);
+			}
 		} else if ((mode & S_IWUGO) == S_IWUGO) {
-			if (cifsInode->cifsAttrs & ATTR_READONLY)
+			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);
+			}
 		}
 		/* BB to be implemented -
 		   via Windows security descriptors or streams */
@@ -1315,7 +1324,7 @@ int cifs_setattr(struct dentry *direntry
 	} else
 		time_buf.ChangeTime = 0;
 
-	if (set_time || time_buf.Attributes) {
+	if (set_time || set_dosattr) {
 		time_buf.CreationTime = 0;	/* do not change */
 		/* In the future we should experiment - try setting timestamps
 		   via Handle (SetFileInfo) instead of by path */

-- 
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[patch 00/37] 2.6.20-stable review, Greg KH, (Fri Mar 30, 2:03 pm)
[patch 04/37] UML - fix epoll, Greg KH, (Fri Mar 30, 2:04 pm)
[patch 05/37] UML - host VDSO fix, Greg KH, (Fri Mar 30, 2:04 pm)
[patch 06/37] UML - Fix static linking, Greg KH, (Fri Mar 30, 2:04 pm)
[patch 06/37] UML - Fix static linking, Greg KH, (Fri Mar 30, 2:04 pm)
[patch 08/37] uml: fix unreasonably long udelay, Greg KH, (Fri Mar 30, 2:04 pm)
[patch 13/37] PPP: Fix PPP skb leak, Greg KH, (Fri Mar 30, 2:04 pm)
[patch 18/37] Fix decnet endianness, Greg KH, (Fri Mar 30, 2:05 pm)
[patch 19/37] NET: Fix FIB rules compatability, Greg KH, (Fri Mar 30, 2:05 pm)
[patch 22/37] V4L: Fix SECAM handling on saa7115, Greg KH, (Fri Mar 30, 2:05 pm)
[patch 28/37] i2o: block IO errors on i2o disk, Greg KH, (Fri Mar 30, 2:06 pm)
[patch 30/37] CIFS: Allow reset of file to ATTR_NORMAL whe ..., Greg KH, (Fri Mar 30, 2:06 pm)
[patch 34/37] libata bugfix: HDIO_DRIVE_TASK, Greg KH, (Fri Mar 30, 2:06 pm)
[patch 36/37] libata: sata_mv: Fix 50xx irq mask, Greg KH, (Fri Mar 30, 2:07 pm)
Re: [patch 00/37] 2.6.20-stable review, Greg KH, (Fri Mar 30, 2:10 pm)
Re: [patch 34/37] libata bugfix: HDIO_DRIVE_TASK, Mark Lord, (Fri Mar 30, 2:42 pm)
libata bugfix: preserve LBA bit for HDIO_DRIVE_TASK, Mark Lord, (Fri Mar 30, 2:45 pm)
Re: [uml-devel] [patch 06/37] UML - Fix static linking, Blaisorblade, (Fri Mar 30, 6:21 pm)
Re: [patch 00/37] 2.6.20-stable review, Chuck Ebbert, (Wed Apr 4, 7:28 am)