From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, Jean-Baptiste Denis <jbdenis@pasteur.fr>,
David Howells <dhowells@redhat.com>,
"Paulo Alcantara (Red Hat)" <pc@manguebit.org>,
Frank Sorenson <sorenson@redhat.com>,
Olga Kornievskaia <okorniev@redhat.com>,
Benjamin Coddington <bcodding@redhat.com>,
Scott Mayhew <smayhew@redhat.com>,
linux-cifs@vger.kernel.org, Steve French <stfrench@microsoft.com>
Subject: [PATCH 6.16 069/189] smb: client: fix data loss due to broken rename(2)
Date: Wed, 17 Sep 2025 14:32:59 +0200 [thread overview]
Message-ID: <20250917123353.559392928@linuxfoundation.org> (raw)
In-Reply-To: <20250917123351.839989757@linuxfoundation.org>
6.16-stable review patch. If anyone has any objections, please let me know.
------------------
From: Paulo Alcantara <pc@manguebit.org>
commit c5ea3065586d790ea5193a679b85585173d59866 upstream.
Rename of open files in SMB2+ has been broken for a very long time,
resulting in data loss as the CIFS client would fail the rename(2)
call with -ENOENT and then removing the target file.
Fix this by implementing ->rename_pending_delete() for SMB2+, which
will rename busy files to random filenames (e.g. silly rename) during
unlink(2) or rename(2), and then marking them to delete-on-close.
Besides, introduce a FIND_WR_NO_PENDING_DELETE flag to prevent open(2)
from reusing open handles that had been marked as delete pending.
Handle it in cifs_get_readable_path() as well.
Reported-by: Jean-Baptiste Denis <jbdenis@pasteur.fr>
Closes: https://marc.info/?i=16aeb380-30d4-4551-9134-4e7d1dc833c0@pasteur.fr
Reviewed-by: David Howells <dhowells@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.org>
Cc: Frank Sorenson <sorenson@redhat.com>
Cc: Olga Kornievskaia <okorniev@redhat.com>
Cc: Benjamin Coddington <bcodding@redhat.com>
Cc: Scott Mayhew <smayhew@redhat.com>
Cc: linux-cifs@vger.kernel.org
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/smb/client/cifsglob.h | 13 ++
fs/smb/client/file.c | 18 +++-
fs/smb/client/inode.c | 86 +++++++++++++++----
fs/smb/client/smb2glob.h | 3
fs/smb/client/smb2inode.c | 204 ++++++++++++++++++++++++++++++++++++----------
fs/smb/client/smb2ops.c | 4
fs/smb/client/smb2proto.h | 3
fs/smb/client/trace.h | 9 --
8 files changed, 268 insertions(+), 72 deletions(-)
--- a/fs/smb/client/cifsglob.h
+++ b/fs/smb/client/cifsglob.h
@@ -87,7 +87,7 @@
#define SMB_INTERFACE_POLL_INTERVAL 600
/* maximum number of PDUs in one compound */
-#define MAX_COMPOUND 7
+#define MAX_COMPOUND 10
/*
* Default number of credits to keep available for SMB3.
@@ -1877,9 +1877,12 @@ static inline bool is_replayable_error(i
/* cifs_get_writable_file() flags */
-#define FIND_WR_ANY 0
-#define FIND_WR_FSUID_ONLY 1
-#define FIND_WR_WITH_DELETE 2
+enum cifs_writable_file_flags {
+ FIND_WR_ANY = 0U,
+ FIND_WR_FSUID_ONLY = (1U << 0),
+ FIND_WR_WITH_DELETE = (1U << 1),
+ FIND_WR_NO_PENDING_DELETE = (1U << 2),
+};
#define MID_FREE 0
#define MID_REQUEST_ALLOCATED 1
@@ -2339,6 +2342,8 @@ struct smb2_compound_vars {
struct kvec qi_iov;
struct kvec io_iov[SMB2_IOCTL_IOV_SIZE];
struct kvec si_iov[SMB2_SET_INFO_IOV_SIZE];
+ struct kvec unlink_iov[SMB2_SET_INFO_IOV_SIZE];
+ struct kvec rename_iov[SMB2_SET_INFO_IOV_SIZE];
struct kvec close_iov;
struct smb2_file_rename_info_hdr rename_info;
struct smb2_file_link_info_hdr link_info;
--- a/fs/smb/client/file.c
+++ b/fs/smb/client/file.c
@@ -998,7 +998,10 @@ int cifs_open(struct inode *inode, struc
/* Get the cached handle as SMB2 close is deferred */
if (OPEN_FMODE(file->f_flags) & FMODE_WRITE) {
- rc = cifs_get_writable_path(tcon, full_path, FIND_WR_FSUID_ONLY, &cfile);
+ rc = cifs_get_writable_path(tcon, full_path,
+ FIND_WR_FSUID_ONLY |
+ FIND_WR_NO_PENDING_DELETE,
+ &cfile);
} else {
rc = cifs_get_readable_path(tcon, full_path, &cfile);
}
@@ -2530,6 +2533,9 @@ refind_writable:
continue;
if (with_delete && !(open_file->fid.access & DELETE))
continue;
+ if ((flags & FIND_WR_NO_PENDING_DELETE) &&
+ open_file->status_file_deleted)
+ continue;
if (OPEN_FMODE(open_file->f_flags) & FMODE_WRITE) {
if (!open_file->invalidHandle) {
/* found a good writable file */
@@ -2647,6 +2653,16 @@ cifs_get_readable_path(struct cifs_tcon
spin_unlock(&tcon->open_file_lock);
free_dentry_path(page);
*ret_file = find_readable_file(cinode, 0);
+ if (*ret_file) {
+ spin_lock(&cinode->open_file_lock);
+ if ((*ret_file)->status_file_deleted) {
+ spin_unlock(&cinode->open_file_lock);
+ cifsFileInfo_put(*ret_file);
+ *ret_file = NULL;
+ } else {
+ spin_unlock(&cinode->open_file_lock);
+ }
+ }
return *ret_file ? 0 : -ENOENT;
}
--- a/fs/smb/client/inode.c
+++ b/fs/smb/client/inode.c
@@ -1931,7 +1931,7 @@ cifs_drop_nlink(struct inode *inode)
* but will return the EACCES to the caller. Note that the VFS does not call
* unlink on negative dentries currently.
*/
-int cifs_unlink(struct inode *dir, struct dentry *dentry)
+static int __cifs_unlink(struct inode *dir, struct dentry *dentry, bool sillyrename)
{
int rc = 0;
unsigned int xid;
@@ -2003,7 +2003,11 @@ retry_std_delete:
goto psx_del_no_retry;
}
- rc = server->ops->unlink(xid, tcon, full_path, cifs_sb, dentry);
+ if (sillyrename || (server->vals->protocol_id > SMB10_PROT_ID &&
+ d_is_positive(dentry) && d_count(dentry) > 2))
+ rc = -EBUSY;
+ else
+ rc = server->ops->unlink(xid, tcon, full_path, cifs_sb, dentry);
psx_del_no_retry:
if (!rc) {
@@ -2071,6 +2075,11 @@ unlink_out:
return rc;
}
+int cifs_unlink(struct inode *dir, struct dentry *dentry)
+{
+ return __cifs_unlink(dir, dentry, false);
+}
+
static int
cifs_mkdir_qinfo(struct inode *parent, struct dentry *dentry, umode_t mode,
const char *full_path, struct cifs_sb_info *cifs_sb,
@@ -2358,14 +2367,16 @@ int cifs_rmdir(struct inode *inode, stru
rc = server->ops->rmdir(xid, tcon, full_path, cifs_sb);
cifs_put_tlink(tlink);
+ cifsInode = CIFS_I(d_inode(direntry));
+
if (!rc) {
+ set_bit(CIFS_INO_DELETE_PENDING, &cifsInode->flags);
spin_lock(&d_inode(direntry)->i_lock);
i_size_write(d_inode(direntry), 0);
clear_nlink(d_inode(direntry));
spin_unlock(&d_inode(direntry)->i_lock);
}
- cifsInode = CIFS_I(d_inode(direntry));
/* force revalidate to go get info when needed */
cifsInode->time = 0;
@@ -2458,8 +2469,11 @@ cifs_do_rename(const unsigned int xid, s
}
#endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */
do_rename_exit:
- if (rc == 0)
+ if (rc == 0) {
d_move(from_dentry, to_dentry);
+ /* Force a new lookup */
+ d_drop(from_dentry);
+ }
cifs_put_tlink(tlink);
return rc;
}
@@ -2470,6 +2484,7 @@ cifs_rename2(struct mnt_idmap *idmap, st
struct dentry *target_dentry, unsigned int flags)
{
const char *from_name, *to_name;
+ struct TCP_Server_Info *server;
void *page1, *page2;
struct cifs_sb_info *cifs_sb;
struct tcon_link *tlink;
@@ -2505,6 +2520,7 @@ cifs_rename2(struct mnt_idmap *idmap, st
if (IS_ERR(tlink))
return PTR_ERR(tlink);
tcon = tlink_tcon(tlink);
+ server = tcon->ses->server;
page1 = alloc_dentry_path();
page2 = alloc_dentry_path();
@@ -2591,19 +2607,53 @@ cifs_rename2(struct mnt_idmap *idmap, st
unlink_target:
#endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */
-
- /* Try unlinking the target dentry if it's not negative */
- if (d_really_is_positive(target_dentry) && (rc == -EACCES || rc == -EEXIST)) {
- if (d_is_dir(target_dentry))
- tmprc = cifs_rmdir(target_dir, target_dentry);
- else
- tmprc = cifs_unlink(target_dir, target_dentry);
- if (tmprc)
- goto cifs_rename_exit;
- rc = cifs_do_rename(xid, source_dentry, from_name,
- target_dentry, to_name);
- if (!rc)
- rehash = false;
+ if (d_really_is_positive(target_dentry)) {
+ if (!rc) {
+ struct inode *inode = d_inode(target_dentry);
+ /*
+ * Samba and ksmbd servers allow renaming a target
+ * directory that is open, so make sure to update
+ * ->i_nlink and then mark it as delete pending.
+ */
+ if (S_ISDIR(inode->i_mode)) {
+ drop_cached_dir_by_name(xid, tcon, to_name, cifs_sb);
+ spin_lock(&inode->i_lock);
+ i_size_write(inode, 0);
+ clear_nlink(inode);
+ spin_unlock(&inode->i_lock);
+ set_bit(CIFS_INO_DELETE_PENDING, &CIFS_I(inode)->flags);
+ CIFS_I(inode)->time = 0; /* force reval */
+ inode_set_ctime_current(inode);
+ inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode));
+ }
+ } else if (rc == -EACCES || rc == -EEXIST) {
+ /*
+ * Rename failed, possibly due to a busy target.
+ * Retry it by unliking the target first.
+ */
+ if (d_is_dir(target_dentry)) {
+ tmprc = cifs_rmdir(target_dir, target_dentry);
+ } else {
+ tmprc = __cifs_unlink(target_dir, target_dentry,
+ server->vals->protocol_id > SMB10_PROT_ID);
+ }
+ if (tmprc) {
+ /*
+ * Some servers will return STATUS_ACCESS_DENIED
+ * or STATUS_DIRECTORY_NOT_EMPTY when failing to
+ * rename a non-empty directory. Make sure to
+ * propagate the appropriate error back to
+ * userspace.
+ */
+ if (tmprc == -EEXIST || tmprc == -ENOTEMPTY)
+ rc = tmprc;
+ goto cifs_rename_exit;
+ }
+ rc = cifs_do_rename(xid, source_dentry, from_name,
+ target_dentry, to_name);
+ if (!rc)
+ rehash = false;
+ }
}
/* force revalidate to go get info when needed */
@@ -2629,6 +2679,8 @@ cifs_dentry_needs_reval(struct dentry *d
struct cifs_tcon *tcon = cifs_sb_master_tcon(cifs_sb);
struct cached_fid *cfid = NULL;
+ if (test_bit(CIFS_INO_DELETE_PENDING, &cifs_i->flags))
+ return false;
if (cifs_i->time == 0)
return true;
--- a/fs/smb/client/smb2glob.h
+++ b/fs/smb/client/smb2glob.h
@@ -30,10 +30,9 @@ enum smb2_compound_ops {
SMB2_OP_QUERY_DIR,
SMB2_OP_MKDIR,
SMB2_OP_RENAME,
- SMB2_OP_DELETE,
SMB2_OP_HARDLINK,
SMB2_OP_SET_EOF,
- SMB2_OP_RMDIR,
+ SMB2_OP_UNLINK,
SMB2_OP_POSIX_QUERY_INFO,
SMB2_OP_SET_REPARSE,
SMB2_OP_GET_REPARSE,
--- a/fs/smb/client/smb2inode.c
+++ b/fs/smb/client/smb2inode.c
@@ -346,9 +346,6 @@ replay_again:
trace_smb3_posix_query_info_compound_enter(xid, tcon->tid,
ses->Suid, full_path);
break;
- case SMB2_OP_DELETE:
- trace_smb3_delete_enter(xid, tcon->tid, ses->Suid, full_path);
- break;
case SMB2_OP_MKDIR:
/*
* Directories are created through parameters in the
@@ -356,23 +353,40 @@ replay_again:
*/
trace_smb3_mkdir_enter(xid, tcon->tid, ses->Suid, full_path);
break;
- case SMB2_OP_RMDIR:
- rqst[num_rqst].rq_iov = &vars->si_iov[0];
+ case SMB2_OP_UNLINK:
+ rqst[num_rqst].rq_iov = vars->unlink_iov;
rqst[num_rqst].rq_nvec = 1;
size[0] = 1; /* sizeof __u8 See MS-FSCC section 2.4.11 */
data[0] = &delete_pending[0];
- rc = SMB2_set_info_init(tcon, server,
- &rqst[num_rqst], COMPOUND_FID,
- COMPOUND_FID, current->tgid,
- FILE_DISPOSITION_INFORMATION,
- SMB2_O_INFO_FILE, 0, data, size);
- if (rc)
+ if (cfile) {
+ rc = SMB2_set_info_init(tcon, server,
+ &rqst[num_rqst],
+ cfile->fid.persistent_fid,
+ cfile->fid.volatile_fid,
+ current->tgid,
+ FILE_DISPOSITION_INFORMATION,
+ SMB2_O_INFO_FILE, 0,
+ data, size);
+ } else {
+ rc = SMB2_set_info_init(tcon, server,
+ &rqst[num_rqst],
+ COMPOUND_FID,
+ COMPOUND_FID,
+ current->tgid,
+ FILE_DISPOSITION_INFORMATION,
+ SMB2_O_INFO_FILE, 0,
+ data, size);
+ }
+ if (!rc && (!cfile || num_rqst > 1)) {
+ smb2_set_next_command(tcon, &rqst[num_rqst]);
+ smb2_set_related(&rqst[num_rqst]);
+ } else if (rc) {
goto finished;
- smb2_set_next_command(tcon, &rqst[num_rqst]);
- smb2_set_related(&rqst[num_rqst++]);
- trace_smb3_rmdir_enter(xid, tcon->tid, ses->Suid, full_path);
+ }
+ num_rqst++;
+ trace_smb3_unlink_enter(xid, tcon->tid, ses->Suid, full_path);
break;
case SMB2_OP_SET_EOF:
rqst[num_rqst].rq_iov = &vars->si_iov[0];
@@ -442,7 +456,7 @@ replay_again:
ses->Suid, full_path);
break;
case SMB2_OP_RENAME:
- rqst[num_rqst].rq_iov = &vars->si_iov[0];
+ rqst[num_rqst].rq_iov = vars->rename_iov;
rqst[num_rqst].rq_nvec = 2;
len = in_iov[i].iov_len;
@@ -732,19 +746,6 @@ finished:
trace_smb3_posix_query_info_compound_done(xid, tcon->tid,
ses->Suid);
break;
- case SMB2_OP_DELETE:
- if (rc)
- trace_smb3_delete_err(xid, tcon->tid, ses->Suid, rc);
- else {
- /*
- * If dentry (hence, inode) is NULL, lease break is going to
- * take care of degrading leases on handles for deleted files.
- */
- if (inode)
- cifs_mark_open_handles_for_deleted_file(inode, full_path);
- trace_smb3_delete_done(xid, tcon->tid, ses->Suid);
- }
- break;
case SMB2_OP_MKDIR:
if (rc)
trace_smb3_mkdir_err(xid, tcon->tid, ses->Suid, rc);
@@ -765,11 +766,11 @@ finished:
trace_smb3_rename_done(xid, tcon->tid, ses->Suid);
SMB2_set_info_free(&rqst[num_rqst++]);
break;
- case SMB2_OP_RMDIR:
- if (rc)
- trace_smb3_rmdir_err(xid, tcon->tid, ses->Suid, rc);
+ case SMB2_OP_UNLINK:
+ if (!rc)
+ trace_smb3_unlink_done(xid, tcon->tid, ses->Suid);
else
- trace_smb3_rmdir_done(xid, tcon->tid, ses->Suid);
+ trace_smb3_unlink_err(xid, tcon->tid, ses->Suid, rc);
SMB2_set_info_free(&rqst[num_rqst++]);
break;
case SMB2_OP_SET_EOF:
@@ -1165,7 +1166,7 @@ smb2_rmdir(const unsigned int xid, struc
FILE_OPEN, CREATE_NOT_FILE, ACL_NO_MODE);
return smb2_compound_op(xid, tcon, cifs_sb,
name, &oparms, NULL,
- &(int){SMB2_OP_RMDIR}, 1,
+ &(int){SMB2_OP_UNLINK}, 1,
NULL, NULL, NULL, NULL);
}
@@ -1174,20 +1175,29 @@ smb2_unlink(const unsigned int xid, stru
struct cifs_sb_info *cifs_sb, struct dentry *dentry)
{
struct cifs_open_parms oparms;
+ struct inode *inode = NULL;
+ int rc;
- oparms = CIFS_OPARMS(cifs_sb, tcon, name,
- DELETE, FILE_OPEN,
- CREATE_DELETE_ON_CLOSE | OPEN_REPARSE_POINT,
- ACL_NO_MODE);
- int rc = smb2_compound_op(xid, tcon, cifs_sb, name, &oparms,
- NULL, &(int){SMB2_OP_DELETE}, 1,
- NULL, NULL, NULL, dentry);
+ if (dentry)
+ inode = d_inode(dentry);
+
+ oparms = CIFS_OPARMS(cifs_sb, tcon, name, DELETE,
+ FILE_OPEN, OPEN_REPARSE_POINT, ACL_NO_MODE);
+ rc = smb2_compound_op(xid, tcon, cifs_sb, name, &oparms,
+ NULL, &(int){SMB2_OP_UNLINK},
+ 1, NULL, NULL, NULL, dentry);
if (rc == -EINVAL) {
cifs_dbg(FYI, "invalid lease key, resending request without lease");
rc = smb2_compound_op(xid, tcon, cifs_sb, name, &oparms,
- NULL, &(int){SMB2_OP_DELETE}, 1,
- NULL, NULL, NULL, NULL);
+ NULL, &(int){SMB2_OP_UNLINK},
+ 1, NULL, NULL, NULL, NULL);
}
+ /*
+ * If dentry (hence, inode) is NULL, lease break is going to
+ * take care of degrading leases on handles for deleted files.
+ */
+ if (!rc && inode)
+ cifs_mark_open_handles_for_deleted_file(inode, name);
return rc;
}
@@ -1441,3 +1451,113 @@ out:
cifs_free_open_info(&data);
return rc;
}
+
+static inline __le16 *utf16_smb2_path(struct cifs_sb_info *cifs_sb,
+ const char *name, size_t namelen)
+{
+ int len;
+
+ if (*name == '\\' ||
+ (cifs_sb_master_tlink(cifs_sb) &&
+ cifs_sb_master_tcon(cifs_sb)->posix_extensions && *name == '/'))
+ name++;
+ return cifs_strndup_to_utf16(name, namelen, &len,
+ cifs_sb->local_nls,
+ cifs_remap(cifs_sb));
+}
+
+int smb2_rename_pending_delete(const char *full_path,
+ struct dentry *dentry,
+ const unsigned int xid)
+{
+ struct cifs_sb_info *cifs_sb = CIFS_SB(d_inode(dentry)->i_sb);
+ struct cifsInodeInfo *cinode = CIFS_I(d_inode(dentry));
+ __le16 *utf16_path __free(kfree) = NULL;
+ __u32 co = file_create_options(dentry);
+ int cmds[] = {
+ SMB2_OP_SET_INFO,
+ SMB2_OP_RENAME,
+ SMB2_OP_UNLINK,
+ };
+ const int num_cmds = ARRAY_SIZE(cmds);
+ char *to_name __free(kfree) = NULL;
+ __u32 attrs = cinode->cifsAttrs;
+ struct cifs_open_parms oparms;
+ static atomic_t sillycounter;
+ struct cifsFileInfo *cfile;
+ struct tcon_link *tlink;
+ struct cifs_tcon *tcon;
+ struct kvec iov[2];
+ const char *ppath;
+ void *page;
+ size_t len;
+ int rc;
+
+ tlink = cifs_sb_tlink(cifs_sb);
+ if (IS_ERR(tlink))
+ return PTR_ERR(tlink);
+ tcon = tlink_tcon(tlink);
+
+ page = alloc_dentry_path();
+
+ ppath = build_path_from_dentry(dentry->d_parent, page);
+ if (IS_ERR(ppath)) {
+ rc = PTR_ERR(ppath);
+ goto out;
+ }
+
+ len = strlen(ppath) + strlen("/.__smb1234") + 1;
+ to_name = kmalloc(len, GFP_KERNEL);
+ if (!to_name) {
+ rc = -ENOMEM;
+ goto out;
+ }
+
+ scnprintf(to_name, len, "%s%c.__smb%04X", ppath, CIFS_DIR_SEP(cifs_sb),
+ atomic_inc_return(&sillycounter) & 0xffff);
+
+ utf16_path = utf16_smb2_path(cifs_sb, to_name, len);
+ if (!utf16_path) {
+ rc = -ENOMEM;
+ goto out;
+ }
+
+ drop_cached_dir_by_name(xid, tcon, full_path, cifs_sb);
+ oparms = CIFS_OPARMS(cifs_sb, tcon, full_path,
+ DELETE | FILE_WRITE_ATTRIBUTES,
+ FILE_OPEN, co, ACL_NO_MODE);
+
+ attrs &= ~ATTR_READONLY;
+ if (!attrs)
+ attrs = ATTR_NORMAL;
+ if (d_inode(dentry)->i_nlink <= 1)
+ attrs |= ATTR_HIDDEN;
+ iov[0].iov_base = &(FILE_BASIC_INFO) {
+ .Attributes = cpu_to_le32(attrs),
+ };
+ iov[0].iov_len = sizeof(FILE_BASIC_INFO);
+ iov[1].iov_base = utf16_path;
+ iov[1].iov_len = sizeof(*utf16_path) * UniStrlen((wchar_t *)utf16_path);
+
+ cifs_get_writable_path(tcon, full_path, FIND_WR_WITH_DELETE, &cfile);
+ rc = smb2_compound_op(xid, tcon, cifs_sb, full_path, &oparms, iov,
+ cmds, num_cmds, cfile, NULL, NULL, dentry);
+ if (rc == -EINVAL) {
+ cifs_dbg(FYI, "invalid lease key, resending request without lease\n");
+ cifs_get_writable_path(tcon, full_path,
+ FIND_WR_WITH_DELETE, &cfile);
+ rc = smb2_compound_op(xid, tcon, cifs_sb, full_path, &oparms, iov,
+ cmds, num_cmds, cfile, NULL, NULL, NULL);
+ }
+ if (!rc) {
+ set_bit(CIFS_INO_DELETE_PENDING, &cinode->flags);
+ } else {
+ cifs_tcon_dbg(FYI, "%s: failed to rename '%s' to '%s': %d\n",
+ __func__, full_path, to_name, rc);
+ rc = -EIO;
+ }
+out:
+ cifs_put_tlink(tlink);
+ free_dentry_path(page);
+ return rc;
+}
--- a/fs/smb/client/smb2ops.c
+++ b/fs/smb/client/smb2ops.c
@@ -5399,6 +5399,7 @@ struct smb_version_operations smb20_oper
.llseek = smb3_llseek,
.is_status_io_timeout = smb2_is_status_io_timeout,
.is_network_name_deleted = smb2_is_network_name_deleted,
+ .rename_pending_delete = smb2_rename_pending_delete,
};
#endif /* CIFS_ALLOW_INSECURE_LEGACY */
@@ -5504,6 +5505,7 @@ struct smb_version_operations smb21_oper
.llseek = smb3_llseek,
.is_status_io_timeout = smb2_is_status_io_timeout,
.is_network_name_deleted = smb2_is_network_name_deleted,
+ .rename_pending_delete = smb2_rename_pending_delete,
};
struct smb_version_operations smb30_operations = {
@@ -5620,6 +5622,7 @@ struct smb_version_operations smb30_oper
.llseek = smb3_llseek,
.is_status_io_timeout = smb2_is_status_io_timeout,
.is_network_name_deleted = smb2_is_network_name_deleted,
+ .rename_pending_delete = smb2_rename_pending_delete,
};
struct smb_version_operations smb311_operations = {
@@ -5736,6 +5739,7 @@ struct smb_version_operations smb311_ope
.llseek = smb3_llseek,
.is_status_io_timeout = smb2_is_status_io_timeout,
.is_network_name_deleted = smb2_is_network_name_deleted,
+ .rename_pending_delete = smb2_rename_pending_delete,
};
#ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY
--- a/fs/smb/client/smb2proto.h
+++ b/fs/smb/client/smb2proto.h
@@ -320,5 +320,8 @@ int smb2_create_reparse_symlink(const un
int smb2_make_nfs_node(unsigned int xid, struct inode *inode,
struct dentry *dentry, struct cifs_tcon *tcon,
const char *full_path, umode_t mode, dev_t dev);
+int smb2_rename_pending_delete(const char *full_path,
+ struct dentry *dentry,
+ const unsigned int xid);
#endif /* _SMB2PROTO_H */
--- a/fs/smb/client/trace.h
+++ b/fs/smb/client/trace.h
@@ -669,13 +669,12 @@ DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(que
DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(posix_query_info_compound_enter);
DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(hardlink_enter);
DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rename_enter);
-DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(rmdir_enter);
+DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(unlink_enter);
DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_eof_enter);
DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_info_compound_enter);
DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(set_reparse_compound_enter);
DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(get_reparse_compound_enter);
DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(query_wsl_ea_compound_enter);
-DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(delete_enter);
DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mkdir_enter);
DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(tdis_enter);
DEFINE_SMB3_INF_COMPOUND_ENTER_EVENT(mknod_enter);
@@ -710,13 +709,12 @@ DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(quer
DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(posix_query_info_compound_done);
DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(hardlink_done);
DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rename_done);
-DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(rmdir_done);
+DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(unlink_done);
DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_eof_done);
DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_info_compound_done);
DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(set_reparse_compound_done);
DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(get_reparse_compound_done);
DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(query_wsl_ea_compound_done);
-DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(delete_done);
DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mkdir_done);
DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(tdis_done);
DEFINE_SMB3_INF_COMPOUND_DONE_EVENT(mknod_done);
@@ -756,14 +754,13 @@ DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query
DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(posix_query_info_compound_err);
DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(hardlink_err);
DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rename_err);
-DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(rmdir_err);
+DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(unlink_err);
DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_eof_err);
DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_info_compound_err);
DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(set_reparse_compound_err);
DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(get_reparse_compound_err);
DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(query_wsl_ea_compound_err);
DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mkdir_err);
-DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(delete_err);
DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(tdis_err);
DEFINE_SMB3_INF_COMPOUND_ERR_EVENT(mknod_err);
next prev parent reply other threads:[~2025-09-17 12:39 UTC|newest]
Thread overview: 205+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-17 12:31 [PATCH 6.16 000/189] 6.16.8-rc1 review Greg Kroah-Hartman
2025-09-17 12:31 ` [PATCH 6.16 001/189] fs: add a FMODE_ flag to indicate IOCB_HAS_METADATA availability Greg Kroah-Hartman
2025-09-17 12:31 ` [PATCH 6.16 002/189] block: dont silently ignore metadata for sync read/write Greg Kroah-Hartman
2025-09-17 12:31 ` [PATCH 6.16 003/189] coredump: dont pointlessly check and spew warnings Greg Kroah-Hartman
2025-09-17 12:31 ` [PATCH 6.16 004/189] fuse: Block access to folio overlimit Greg Kroah-Hartman
2025-09-17 12:31 ` [PATCH 6.16 005/189] fhandle: use more consistent rules for decoding file handle from userns Greg Kroah-Hartman
2025-09-17 12:31 ` [PATCH 6.16 006/189] dma-debug: dont enforce dma mapping check on noncoherent allocations Greg Kroah-Hartman
2025-09-17 12:31 ` [PATCH 6.16 007/189] perf: Fix the POLL_HUP delivery breakage Greg Kroah-Hartman
2025-09-17 12:31 ` [PATCH 6.16 008/189] irqchip/mvebu-gicp: Fix an IS_ERR() vs NULL check in probe() Greg Kroah-Hartman
2025-09-17 12:31 ` [PATCH 6.16 009/189] Bluetooth: hci_conn: Fix not cleaning up Broadcaster/Broadcast Source Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 010/189] iommu/vt-d: Split intel_iommu_domain_alloc_paging_flags() Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 011/189] iommu/vt-d: Create unique domain ops for each stage Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 012/189] iommu/vt-d: Split paging_domain_compatible() Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 013/189] iommu/vt-d: Make iotlb_sync_map a static property of dmar_domain Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 014/189] Bluetooth: hci_conn: Fix running bis_cleanup for hci_conn->type PA_LINK Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 015/189] Bluetooth: ISO: Fix getname not returning broadcast fields Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 016/189] Revert "drm/amdgpu: Add more checks to PSP mailbox" Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 017/189] flexfiles/pNFS: fix NULL checks on result of ff_layout_choose_ds_for_read Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 018/189] SUNRPC: call xs_sock_process_cmsg for all cmsg Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 019/189] NFSv4: Dont clear capabilities that wont be reset Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 020/189] md: keep recovery_cp in mdp_superblock_s Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 021/189] trace/fgraph: Fix error handling Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 022/189] NFSv4: Clear the NFS_CAP_FS_LOCATIONS flag if it is not set Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 023/189] NFSv4: Clear NFS_CAP_OPEN_XOR and NFS_CAP_DELEGTIME if not supported Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 024/189] NFSv4: Clear the NFS_CAP_XATTR flag if not supported by the server Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 025/189] tracing: Fix tracing_marker may trigger page fault during preempt_disable Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 026/189] nfs/localio: restore creds before releasing pageio data Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 027/189] ftrace/samples: Fix function size computation Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 028/189] tracing/osnoise: Fix null-ptr-deref in bitmap_parselist() Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 029/189] NFS: Serialise O_DIRECT i/o and truncate() Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 030/189] NFSv4.2: Serialise O_DIRECT i/o and fallocate() Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 031/189] NFSv4.2: Serialise O_DIRECT i/o and clone range Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 032/189] NFSv4.2: Serialise O_DIRECT i/o and copy range Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 033/189] NFS: nfs_invalidate_folio() must observe the offset and size arguments Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 034/189] NFSv4/flexfiles: Fix layout merge mirror check Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 035/189] tracing: Silence warning when chunk allocation fails in trace_pid_write Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 036/189] bpf, cpumap: Disable page_pool direct xdp_return need larger scope Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 037/189] cpufreq/amd-pstate: Fix setting of CPPC.min_perf in active mode for performance governor Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 038/189] s390/pai: Deny all events not handled by this PMU Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 039/189] s390/cpum_cf: Deny all sampling events by counter PMU Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 040/189] cpufreq/amd-pstate: Fix a regression leading to EPP 0 after resume Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 041/189] bpf: Fix out-of-bounds dynptr write in bpf_crypto_crypt Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 042/189] xsk: Fix immature cq descriptor production Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 043/189] rqspinlock: Choose trylock fallback for NMI waiters Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 044/189] bpf: Allow fall back to interpreter for programs with stack size <= 512 Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 045/189] bpf: Tell memcg to use allow_spinning=false path in bpf_timer_init() Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 046/189] tcp_bpf: Call sk_msg_free() when tcp_bpf_send_verdict() fails to allocate psock->cork Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 047/189] proc: fix type confusion in pde_set_flags() Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 048/189] EDAC/altera: Delete an inappropriate dma_free_coherent() call Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 049/189] i2c: rtl9300: fix channel number bound check Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 050/189] Revert "SUNRPC: Dont allow waiting for exiting tasks" Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 051/189] compiler-clang.h: define __SANITIZE_*__ macros only when undefined Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 052/189] arm64: kexec: initialize kexec_buf struct in load_other_segments() Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 053/189] mptcp: sockopt: make sync_socket_options propagate SOCK_KEEPOPEN Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 054/189] doc: mptcp: net.mptcp.pm_type is deprecated Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 055/189] netlink: specs: mptcp: fix if-idx attribute type Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 056/189] ocfs2: fix recursive semaphore deadlock in fiemap call Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 057/189] btrfs: fix squota compressed stats leak Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 058/189] btrfs: fix subvolume deletion lockup caused by inodes xarray race Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 059/189] i2c: i801: Hide Intel Birch Stream SoC TCO WDT Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 060/189] i2c: rtl9300: ensure data length is within supported range Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 061/189] i2c: rtl9300: remove broken SMBus Quick operation support Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 062/189] net: libwx: fix to enable RSS Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 063/189] net: usb: asix: ax88772: drop phylink use in PM to avoid MDIO runtime PM wakeups Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 064/189] PM: EM: Add function for registering a PD without capacity update Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 065/189] PM: hibernate: Restrict GFP mask in hibernation_snapshot() Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 066/189] wifi: iwlwifi: fix 130/1030 configs Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 067/189] s390: kexec: initialize kexec_buf struct Greg Kroah-Hartman
2025-09-17 12:32 ` [PATCH 6.16 068/189] smb: client: fix compound alignment with encryption Greg Kroah-Hartman
2025-09-17 12:32 ` Greg Kroah-Hartman [this message]
2025-09-17 12:33 ` [PATCH 6.16 070/189] mtd: nand: raw: atmel: Respect tAR, tCLR in read setup timing Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 071/189] mtd: rawnand: stm32_fmc2: avoid overlapping mappings on ECC buffer Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 072/189] mtd: rawnand: stm32_fmc2: fix ECC overwrite Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 073/189] fuse: do not allow mapping a non-regular backing file Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 074/189] fuse: check if copy_file_range() returns larger than requested size Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 075/189] fuse: prevent overflow in copy_file_range return value Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 076/189] mm/hugetlb: add missing hugetlb_lock in __unmap_hugepage_range() Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 077/189] mm/khugepaged: fix the address passed to notifier on testing young Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 078/189] mm/vmalloc, mm/kasan: respect gfp mask in kasan_populate_vmalloc() Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 079/189] mm/memory-failure: fix VM_BUG_ON_PAGE(PagePoisoned(page)) when unpoison memory Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 080/189] mm/memory-failure: fix redundant updates for already poisoned pages Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 081/189] mm/damon/core: set quota->charged_from to jiffies at first charge window Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 082/189] mm/damon/lru_sort: avoid divide-by-zero in damon_lru_sort_apply_parameters() Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 083/189] drm/mediatek: fix potential OF node use-after-free Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 084/189] drm/i915/power: fix size for for_each_set_bit() in abox iteration Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 085/189] drm/xe: Attempt to bring bos back to VRAM after eviction Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 086/189] drm/xe: Allow the pm notifier to continue on failure Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 087/189] drm/xe: Block exec and rebind worker while evicting for suspend / hibernate Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 088/189] drm/amdgpu: fix a memory leak in fence cleanup when unloading Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 089/189] drm/amdgpu/vcn: Allow limiting ctx to instance 0 for AV1 at any time Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 090/189] drm/amdgpu/vcn4: Fix IB parsing with multiple engine info packages Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 091/189] drm/amd/display: Correct sequences and delays for DCN35 PG & RCG Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 092/189] drm/amd/display: remove oem i2c adapter on finish Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 093/189] drm/edid: Define the quirks in an enum list Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 094/189] drm/edid: Add support for quirks visible to DRM core and drivers Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 095/189] drm/dp: Add an EDID quirk for the DPCD register access probe Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 096/189] drm/amd/display: Disable DPCD Probe Quirk Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 097/189] btrfs: use readahead_expand() on compressed extents Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 098/189] btrfs: fix corruption reading compressed range when block size is smaller than page size Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 099/189] kernfs: Fix UAF in polling when open file is released Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 100/189] libceph: fix invalid accesses to ceph_connection_v1_info Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 101/189] ceph: fix race condition validating r_parent before applying state Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 102/189] ceph: fix race condition where r_parent becomes stale before sending message Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 103/189] ceph: always call ceph_shift_unused_folios_left() Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 104/189] ceph: fix crash after fscrypt_encrypt_pagecache_blocks() error Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 105/189] mtd: spinand: Add a ->configure_chip() hook Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 106/189] mtd: spinand: winbond: Enable high-speed modes on w25n0xjw Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 107/189] mtd: spinand: winbond: Fix oob_layout for W25N01JW Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 108/189] mm/damon/sysfs: fix use-after-free in state_show() Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 109/189] mm/damon/reclaim: avoid divide-by-zero in damon_reclaim_apply_parameters() Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 110/189] drm/amd/display: Destroy cached state in complete() callback Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 111/189] drm/amd/display: Drop dm_prepare_suspend() and dm_complete() Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 112/189] drm/amd/amdgpu: Declare isp firmware binary file Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 113/189] hrtimers: Unconditionally update target CPU base after offline timer migration Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 114/189] fs/resctrl: Eliminate false positive lockdep warning when reading SNC counters Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 115/189] x86/cpu/topology: Always try cpu_parse_topology_ext() on AMD/Hygon Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 116/189] Input: iqs7222 - avoid enabling unused interrupts Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 117/189] Input: i8042 - add TUXEDO InfinityBook Pro Gen10 AMD to i8042 quirk table Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 118/189] Input: xpad - add support for Flydigi Apex 5 Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 119/189] Revert "net: usb: asix: ax88772: drop phylink use in PM to avoid MDIO runtime PM wakeups" Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 120/189] tty: hvc_console: Call hvc_kick in hvc_write unconditionally Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 121/189] serial: sc16is7xx: fix bug in flow control levels init Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 122/189] dt-bindings: serial: brcm,bcm7271-uart: Constrain clocks Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 123/189] USB: serial: option: add Telit Cinterion FN990A w/audio compositions Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 124/189] USB: serial: option: add Telit Cinterion LE910C4-WWX new compositions Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 125/189] mtd: rawnand: nuvoton: Fix an error handling path in ma35_nand_chips_init() Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 126/189] drm/panthor: validate group queue count Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 127/189] net: fec: Fix possible NPD in fec_enet_phy_reset_after_clk_enable() Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 128/189] net: phylink: add lock for serializing concurrent pl->phydev writes with resolver Greg Kroah-Hartman
2025-09-17 12:33 ` [PATCH 6.16 129/189] net: phy: transfer phy_config_inband() locking responsibility to phylink Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 130/189] wifi: ath12k: Fix missing station power save configuration Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 131/189] wifi: ath12k: add link support for multi-link in arsta Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 132/189] wifi: ath12k: Add support to enqueue management frame at MLD level Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 133/189] wifi: ath12k: fix WMI TLV header misalignment Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 134/189] PCI: mvebu: Fix use of for_each_of_range() iterator Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 135/189] genetlink: fix genl_bind() invoking bind() after -EPERM Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 136/189] net: dsa: b53: fix ageing time for BCM53101 Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 137/189] net: bridge: Bounce invalid boolopts Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 138/189] tunnels: reset the GSO metadata before reusing the skb Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 139/189] docs: networking: can: change bcm_msg_head frames member to support flexible array Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 140/189] igb: Fix NULL pointer dereference in ethtool loopback test Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 141/189] igb: fix link test skipping when interface is admin down Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 142/189] i40e: fix IRQ freeing in i40e_vsi_request_irq_msix error path Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 143/189] drm/xe/configfs: Dont touch survivability_mode on fini Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 144/189] drm/amd/display: use udelay rather than fsleep Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 145/189] net: dev_ioctl: take ops lock in hwtstamp lower paths Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 146/189] macsec: sync features on RTM_NEWLINK Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 147/189] selftests: can: enable CONFIG_CAN_VCAN as a module Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 148/189] can: j1939: implement NETDEV_UNREGISTER notification handler Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 149/189] can: j1939: j1939_sk_bind(): call j1939_priv_put() immediately when j1939_local_ecu_get() failed Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 150/189] can: j1939: j1939_local_ecu_get(): undo increment when j1939_local_ecu_get() fails Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 151/189] can: xilinx_can: xcan_write_frame(): fix use-after-free of transmitted SKB Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 152/189] netfilter: nft_set_bitmap: fix lockdep splat due to missing annotation Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 153/189] netfilter: nft_set_pipapo: remove unused arguments Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 154/189] netfilter: nft_set: remove one argument from lookup and update functions Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 155/189] netfilter: nft_set_pipapo: merge pipapo_get/lookup Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 156/189] netfilter: nft_set_pipapo: dont return bogus extension pointer Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 157/189] netfilter: nft_set_pipapo: dont check genbit from packetpath lookups Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 158/189] netfilter: nft_set_rbtree: continue traversal if element is inactive Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 159/189] netfilter: nf_tables: Reintroduce shortened deletion notifications Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 160/189] netfilter: nf_tables: place base_seq in struct net Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 161/189] netfilter: nf_tables: make nft_set_do_lookup available unconditionally Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 162/189] netfilter: nf_tables: restart set lookup on base_seq change Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 163/189] hsr: use rtnl lock when iterating over ports Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 164/189] hsr: use hsr_for_each_port_rtnl in hsr_port_get_hsr Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 165/189] hsr: hold rcu and dev lock for hsr_get_port_ndev Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 166/189] phy: qualcomm: phy-qcom-eusb2-repeater: fix override properties Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 167/189] dmaengine: idxd: Remove improper idxd_free Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 168/189] dmaengine: idxd: Fix refcount underflow on module unload Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 169/189] dmaengine: idxd: Fix double free in idxd_setup_wqs() Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 170/189] erofs: get rid of {get,put}_page() for ztailpacking data Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 171/189] erofs: remove need_kmap in erofs_read_metabuf() Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 172/189] erofs: unify meta buffers in z_erofs_fill_inode() Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 173/189] erofs: fix invalid algorithm for encoded extents Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 174/189] dmaengine: ti: edma: Fix memory allocation size for queue_priority_map Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 175/189] regulator: sy7636a: fix lifecycle of power good gpio Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 176/189] erofs: fix runtime warning on truncate_folio_batch_exceptionals() Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 177/189] xhci: dbc: decouple endpoint allocation from initialization Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 178/189] xhci: dbc: Fix full DbC transfer ring after several reconnects Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 179/189] xhci: fix memory leak regression when freeing xhci vdev devices depth first Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 180/189] USB: gadget: dummy-hcd: Fix locking bug in RT-enabled kernels Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 181/189] usb: typec: tcpm: properly deliver cable vdms to altmode drivers Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 182/189] usb: gadget: midi2: Fix missing UMP group attributes initialization Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 183/189] usb: gadget: midi2: Fix MIDI2 IN EP max packet size Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 184/189] dmaengine: qcom: bam_dma: Fix DT error handling for num-channels/ees Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 185/189] dmaengine: dw: dmamux: Fix device reference leak in rzn1_dmamux_route_allocate Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 186/189] phy: qcom: qmp-pcie: Fix PHY initialization when powered down by firmware Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 187/189] phy: tegra: xusb: fix device and OF node leak at probe Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 188/189] phy: ti: omap-usb2: fix device leak at unbind Greg Kroah-Hartman
2025-09-17 12:34 ` [PATCH 6.16 189/189] phy: ti-pipe3: " Greg Kroah-Hartman
2025-09-17 18:09 ` [PATCH 6.16 000/189] 6.16.8-rc1 review Hardik Garg
2025-09-17 19:08 ` Achill Gilgenast
2025-09-17 20:08 ` Jon Hunter
2025-09-17 20:51 ` Pascal Ernster
2025-09-19 8:23 ` Pascal Ernster
2025-09-18 2:37 ` Peter Schneider
2025-09-18 3:07 ` Takeshi Ogasawara
2025-09-18 5:16 ` Brett A C Sheffield
2025-09-18 10:46 ` [PATCH 6.16 000/189] " Anders Roxell
2025-09-18 11:43 ` Dileep malepu
2025-09-18 12:46 ` Ron Economos
2025-09-18 18:02 ` Mark Brown
2025-09-18 18:22 ` Florian Fainelli
2025-09-18 19:21 ` Pavel Machek
2025-09-19 11:11 ` Christian Heusel
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=20250917123353.559392928@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=bcodding@redhat.com \
--cc=dhowells@redhat.com \
--cc=jbdenis@pasteur.fr \
--cc=linux-cifs@vger.kernel.org \
--cc=okorniev@redhat.com \
--cc=patches@lists.linux.dev \
--cc=pc@manguebit.org \
--cc=smayhew@redhat.com \
--cc=sorenson@redhat.com \
--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