FAILED: patch "[PATCH] smb/server: do not require delete access for non-replacing" failed to apply to 6.6-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 6.6-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.6.y
git checkout FETCH_HEAD
git cherry-pick -x 851ed9e09639e0daf79a506ce26097b296ed5518
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026071408-outclass-pacifier-ecb7@gregkh' --subject-prefix 'PATCH 6.6.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 851ed9e09639e0daf79a506ce26097b296ed5518 Mon Sep 17 00:00:00 2001
From: ChenXiaoSong <[email protected]>
Date: Sun, 28 Jun 2026 07:42:43 +0000
Subject: [PATCH] smb/server: do not require delete access for non-replacing
links
Reproducer:
1. server: systemctl start ksmbd
2. client: mount -t cifs //${server_ip}/export /mnt
3. client: touch /mnt/file; ln /mnt/file /mnt/hardlink
4. client err log: ln: failed to create hard link 'hardlink' => 'file': Permission denied
5. server err log: ksmbd: no right to delete : 0x80
fs/smb/server/smb2pdu.c +8 -6
@@ -6921,16 +6921,18 @@ static int smb2_set_info_file(struct ksmbd_work *work, struct ksmbd_file *fp, }case FILE_LINK_INFORMATION : { -if (!(fp->daccess &FILE_DELETE_LE )) { -pr_err ("no right to delete : 0x%x\n" , fp->daccess); -return -EACCES ; - } +struct smb2_file_link_info *file_info;if (buf_len <sizeof (struct smb2_file_link_info ))return -EMSGSIZE ; -return smb2_create_link (work, work->tcon->share_conf, - (struct smb2_file_link_info *)buffer, + file_info = (struct smb2_file_link_info *)buffer; +if (file_info->ReplaceIfExists && !(fp->daccess &FILE_DELETE_LE )) { +pr_err ("no right to delete : 0x%x\n" , fp->daccess); +return -EACCES ; + } + +return smb2_create_link (work, work->tcon->share_conf, file_info, buf_len, fp->filp, work->conn->local_nls); }