diff options
author | Jeff Layton <jlayton@redhat.com> | 2008-05-22 09:33:34 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2008-05-25 00:33:58 +0000 |
commit | 5132861a7a44498ebb18357473f8b8d4cdc70e9f (patch) | |
tree | 7a1efb101645878623a73f380113fd29f43aeae4 /fs/posix_acl.c | |
parent | b7206153f61bb63ee2cffa63905b57ec01d20e6e (diff) |
disable most mode changes on non-unix/non-cifsacl mounts
CIFS currently allows you to change the mode of an inode on a share that
doesn't have unix extensions enabled, and isn't using cifsacl. The inode
in this case *only* has its mode changed in memory on the client. This
is problematic since it can change any time the inode is purged from the
cache.
This patch makes cifs_setattr silently ignore most mode changes when
unix extensions and cifsacl support are not enabled, and when the share
is not mounted with the "dynperm" option. The exceptions are:
When a mode change would remove all write access to an inode we turn on
the ATTR_READONLY bit on the server and remove all write bits from the
inode's mode in memory.
When a mode change would add a write bit to an inode that previously had
them all turned off, it turns off the ATTR_READONLY bit on the server,
and resets the mode back to what it would normally be (generally, the
file_mode or dir_mode of the share).
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/posix_acl.c')
0 files changed, 0 insertions, 0 deletions