From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Paulo Alcantara <pc@manguebit.com>,
Steve French <stfrench@microsoft.com>,
Sasha Levin <sashal@kernel.org>,
sfrench@samba.org, linux-cifs@vger.kernel.org,
samba-technical@lists.samba.org
Subject: [PATCH AUTOSEL 6.6 47/51] smb: client: set correct d_type for reparse points under DFS mounts
Date: Mon, 12 Feb 2024 19:20:24 -0500 [thread overview]
Message-ID: <20240213002052.670571-47-sashal@kernel.org> (raw)
In-Reply-To: <20240213002052.670571-1-sashal@kernel.org>
From: Paulo Alcantara <pc@manguebit.com>
[ Upstream commit 55c7788c37242702868bfac7861cdf0c358d6c3d ]
Send query dir requests with an info level of
SMB_FIND_FILE_FULL_DIRECTORY_INFO rather than
SMB_FIND_FILE_DIRECTORY_INFO when the client is generating its own
inode numbers (e.g. noserverino) so that reparse tags still
can be parsed directly from the responses, but server won't
send UniqueId (server inode number)
Signed-off-by: Paulo Alcantara <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/smb/client/readdir.c | 15 ++++++++-------
fs/smb/client/smb2pdu.c | 6 ++++++
2 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/fs/smb/client/readdir.c b/fs/smb/client/readdir.c
index d30ea2005eb3..e23cd216bffb 100644
--- a/fs/smb/client/readdir.c
+++ b/fs/smb/client/readdir.c
@@ -299,14 +299,16 @@ cifs_dir_info_to_fattr(struct cifs_fattr *fattr, FILE_DIRECTORY_INFO *info,
}
static void cifs_fulldir_info_to_fattr(struct cifs_fattr *fattr,
- SEARCH_ID_FULL_DIR_INFO *info,
+ const void *info,
struct cifs_sb_info *cifs_sb)
{
+ const FILE_FULL_DIRECTORY_INFO *di = info;
+
__dir_info_to_fattr(fattr, info);
- /* See MS-FSCC 2.4.19 FileIdFullDirectoryInformation */
+ /* See MS-FSCC 2.4.14, 2.4.19 */
if (fattr->cf_cifsattrs & ATTR_REPARSE)
- fattr->cf_cifstag = le32_to_cpu(info->EaSize);
+ fattr->cf_cifstag = le32_to_cpu(di->EaSize);
cifs_fill_common_info(fattr, cifs_sb);
}
@@ -420,7 +422,7 @@ _initiate_cifs_search(const unsigned int xid, struct file *file,
} else if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) {
cifsFile->srch_inf.info_level = SMB_FIND_FILE_ID_FULL_DIR_INFO;
} else /* not srvinos - BB fixme add check for backlevel? */ {
- cifsFile->srch_inf.info_level = SMB_FIND_FILE_DIRECTORY_INFO;
+ cifsFile->srch_inf.info_level = SMB_FIND_FILE_FULL_DIRECTORY_INFO;
}
search_flags = CIFS_SEARCH_CLOSE_AT_END | CIFS_SEARCH_RETURN_RESUME;
@@ -1014,10 +1016,9 @@ static int cifs_filldir(char *find_entry, struct file *file,
(FIND_FILE_STANDARD_INFO *)find_entry,
cifs_sb);
break;
+ case SMB_FIND_FILE_FULL_DIRECTORY_INFO:
case SMB_FIND_FILE_ID_FULL_DIR_INFO:
- cifs_fulldir_info_to_fattr(&fattr,
- (SEARCH_ID_FULL_DIR_INFO *)find_entry,
- cifs_sb);
+ cifs_fulldir_info_to_fattr(&fattr, find_entry, cifs_sb);
break;
default:
cifs_dir_info_to_fattr(&fattr,
diff --git a/fs/smb/client/smb2pdu.c b/fs/smb/client/smb2pdu.c
index f5006aa97f5b..c84d65dba813 100644
--- a/fs/smb/client/smb2pdu.c
+++ b/fs/smb/client/smb2pdu.c
@@ -5076,6 +5076,9 @@ int SMB2_query_directory_init(const unsigned int xid,
case SMB_FIND_FILE_POSIX_INFO:
req->FileInformationClass = SMB_FIND_FILE_POSIX_INFO;
break;
+ case SMB_FIND_FILE_FULL_DIRECTORY_INFO:
+ req->FileInformationClass = FILE_FULL_DIRECTORY_INFORMATION;
+ break;
default:
cifs_tcon_dbg(VFS, "info level %u isn't supported\n",
info_level);
@@ -5145,6 +5148,9 @@ smb2_parse_query_directory(struct cifs_tcon *tcon,
/* note that posix payload are variable size */
info_buf_size = sizeof(struct smb2_posix_info);
break;
+ case SMB_FIND_FILE_FULL_DIRECTORY_INFO:
+ info_buf_size = sizeof(FILE_FULL_DIRECTORY_INFO);
+ break;
default:
cifs_tcon_dbg(VFS, "info level %u isn't supported\n",
srch_inf->info_level);
--
2.43.0
next prev parent reply other threads:[~2024-02-13 0:22 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-13 0:19 [PATCH AUTOSEL 6.6 01/51] fs/ntfs3: Improve alternative boot processing Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 02/51] fs/ntfs3: Modified fix directory element type detection Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 03/51] fs/ntfs3: Improve ntfs_dir_count Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 04/51] fs/ntfs3: Correct hard links updating when dealing with DOS names Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 05/51] fs/ntfs3: Print warning while fixing hard links count Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 06/51] fs/ntfs3: Reduce stack usage Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 07/51] fs/ntfs3: Fix multithreaded stress test Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 08/51] fs/ntfs3: Fix detected field-spanning write (size 8) of single field "le->name" Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 09/51] fs/ntfs3: Add file_modified Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 10/51] fs/ntfs3: Drop suid and sgid bits as a part of fpunch Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 11/51] fs/ntfs3: Implement super_operations::shutdown Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 12/51] fs/ntfs3: ntfs3_forced_shutdown use int instead of bool Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 13/51] fs/ntfs3: Add NULL ptr dereference checking at the end of attr_allocate_frame() Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 14/51] fs/ntfs3: Disable ATTR_LIST_ENTRY size check Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 15/51] fs/ntfs3: Use kvfree to free memory allocated by kvmalloc Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 16/51] fs/ntfs3: use non-movable memory for ntfs3 MFT buffer cache Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 17/51] fs/ntfs3: Prevent generic message "attempt to access beyond end of device" Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 18/51] fs/ntfs3: Use i_size_read and i_size_write Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 19/51] fs/ntfs3: Correct function is_rst_area_valid Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 20/51] fs/ntfs3: Fixed overflow check in mi_enum_attr() Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 21/51] fs/ntfs3: Update inode->i_size after success write into compressed file Sasha Levin
2024-02-13 0:19 ` [PATCH AUTOSEL 6.6 22/51] fs/ntfs3: Fix oob in ntfs_listxattr Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 23/51] wifi: mac80211: set station RX-NSS on reconfig Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 24/51] wifi: mac80211: adding missing drv_mgd_complete_tx() call Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 25/51] wifi: mac80211: accept broadcast probe responses on 6 GHz Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 26/51] wifi: iwlwifi: do not announce EPCS support Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 27/51] efi: runtime: Fix potential overflow of soft-reserved region size Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 28/51] efi: Don't add memblocks for soft-reserved memory Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 29/51] hwmon: (coretemp) Enlarge per package core count limit Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 30/51] scsi: lpfc: Use unsigned type for num_sge Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 31/51] scsi: ufs: core: Fix shift issue in ufshcd_clear_cmd() Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 32/51] scsi: ufs: core: Remove the ufshcd_release() in ufshcd_err_handling_prepare() Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 33/51] LoongArch: Select ARCH_ENABLE_THP_MIGRATION instead of redefining it Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 34/51] LoongArch: Select HAVE_ARCH_SECCOMP to use the common SECCOMP menu Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 35/51] LoongArch: Change acpi_core_pic[NR_CPUS] to acpi_core_pic[MAX_CORE_PIC] Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 36/51] LoongArch: vDSO: Disable UBSAN instrumentation Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 37/51] accel/ivpu: Force snooping for MMU writes Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 38/51] accel/ivpu: Disable d3hot_delay on all NPU generations Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 39/51] accel/ivpu/40xx: Stop passing SKU boot parameters to FW Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 40/51] firewire: core: send bus reset promptly on gap count error Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 41/51] libceph: fail sparse-read if the data length doesn't match Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 42/51] PCI: dwc: Clean up dw_pcie_ep_raise_msi_irq() alignment Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 43/51] drm/amdgpu: skip to program GFXDEC registers for suspend abort Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 44/51] drm/amdgpu: reset gpu for s3 suspend abort case Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 45/51] drm/amdgpu: Fix shared buff copy to user Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 46/51] drm/amdgpu: Fix HDP flush for VFs on nbio v7.9 Sasha Levin
2024-02-13 0:20 ` Sasha Levin [this message]
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 48/51] virtio-blk: Ensure no requests in virtqueues before deleting vqs Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 49/51] cifs: change tcon status when need_reconnect is set on it Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 50/51] cifs: handle cases where multiple sessions share connection Sasha Levin
2024-02-13 0:20 ` [PATCH AUTOSEL 6.6 51/51] smb3: clarify mount warning Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240213002052.670571-47-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pc@manguebit.com \
--cc=samba-technical@lists.samba.org \
--cc=sfrench@samba.org \
--cc=stable@vger.kernel.org \
--cc=stfrench@microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox