Message ID | 20241231223642.15722-11-pali@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [01/12] cifs: Fix struct FILE_ALL_INFO | expand |
diff --git a/fs/smb/client/smb1ops.c b/fs/smb/client/smb1ops.c index 33af1a6ab348..1697c1fc13b0 100644 --- a/fs/smb/client/smb1ops.c +++ b/fs/smb/client/smb1ops.c @@ -800,6 +800,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; }
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> --- fs/smb/client/smb1ops.c | 5 +++++ 1 file changed, 5 insertions(+)