diff options
author | Pali Rohár <pali@kernel.org> | 2024-12-30 22:18:53 +0100 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2025-10-09 23:01:24 -0500 |
commit | 92210ccd877ba577585e420c99cff2b51c4c9fe2 (patch) | |
tree | c3e950725bc4fdf1f914577adbb7ce99efaafc90 | |
parent | 88cae132dc0539ad188b787d32a7df4e16b5c1af (diff) |
cifs: Add fallback code path for cifs_mkdir_setinfo()
Use SMBSetInformation() as a fallback function (when CIFSSMBSetPathInfo()
fails) which can set attribudes on the directory, including changing
read-only attribute.
Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
-rw-r--r-- | fs/smb/client/smb1ops.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/smb/client/smb1ops.c b/fs/smb/client/smb1ops.c index 7b17668e2a54..ca8f3dd7ff63 100644 --- a/fs/smb/client/smb1ops.c +++ b/fs/smb/client/smb1ops.c @@ -876,6 +876,11 @@ cifs_mkdir_setinfo(struct inode *inode, const char *full_path, info.Attributes = cpu_to_le32(dosattrs); rc = CIFSSMBSetPathInfo(xid, tcon, full_path, &info, cifs_sb->local_nls, cifs_sb); + if (rc == -EOPNOTSUPP || rc == -EINVAL) + rc = SMBSetInformation(xid, tcon, full_path, + info.Attributes, + 0 /* do not change write time */, + cifs_sb->local_nls, cifs_sb); if (rc == 0) cifsInode->cifsAttrs = dosattrs; } |