From a2f9fb451c68adf2b3f7cae1bb66fb5801769ac6 Mon Sep 17 00:00:00 2001 From: ChenXiaoSong Date: Fri, 7 Aug 2026 08:58:06 +0000 Subject: [PATCH] smb/client: return EOPNOTSUPP for unsupported O_TMPFILE Some SMB servers return STATUS_OBJECT_NAME_NOT_FOUND or STATUS_DELETE_PENDING when creating an O_TMPFILE. The SMB client maps them to ENOENT. The ENOENT error is supposed to be returned when the path (a target directory in this case) does not exist, while a lack of support of O_TMPFILE by the target file system should be indicated by EOPNOTSUPP. Reported-by: Mikhail Stefantsev Fixes: 3e7d63037a2b ("smb: client: add support for O_TMPFILE") Closes: https://lore.kernel.org/linux-cifs/75fb5359-b268-492d-8d4a-504d1af60f2a@app.fastmail.com/ Signed-off-by: ChenXiaoSong Signed-off-by: Namjae Jeon Signed-off-by: Paulo Alcantara --- fs/smb/client/dir.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fs/smb/client/dir.c b/fs/smb/client/dir.c index 88a4a1787ff0..b0ddcaa2d815 100644 --- a/fs/smb/client/dir.c +++ b/fs/smb/client/dir.c @@ -1138,6 +1138,8 @@ int cifs_tmpfile(struct mnt_idmap *idmap, struct inode *dir, } while (unlikely(rc == -EEXIST) && ++retries < max_retries); if (rc) { + if (rc == -ENOENT) + rc = -EOPNOTSUPP; cifs_del_pending_open(&open); goto out; }