From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, Pan Guihua <pan.guihua@datatom.com>,
Namjae Jeon <linkinjeon@kernel.org>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH 7.3 538/547] ksmbd: retry break notifications on another connection
Date: Wed, 4 Nov 2026 16:12:02 -0500 [thread overview]
Message-ID: <20261104211053.689152589@linuxfoundation.org> (raw)
In-Reply-To: <20261104211038.406938024@linuxfoundation.org>
7.3-stable review patch. If anyone has any objections, please let me know.
------------------
From: Namjae Jeon <linkinjeon@kernel.org>
[ Upstream commit 14ad1f21fbf05179116dd6ef4ab3b6556478fa50 ]
An oplock or lease break belongs to an open that can outlive its original
channel. A draining channel or stalled TCP writer can otherwise leave the
break pending until timeout or invalidate a durable open.
Snapshot the owner's live channels and try eligible connections with the
same notification. Track TCP delivery separately from the SMB ACK, retry
when a channel stops progressing, and share one break deadline. Run
ordinary break waits on a dedicated workqueue so blocked request
responses do not stall breaks.
Publish NONE before sending a level II break, which requires no ACK, so
an unsolicited ACK observes the completed level while TCP delivery is
pending.
Keep the first rename lease notification in the request context and
enqueue the interim writer only after the notification is accepted. Join
that work before returning so a blocked interim response does not stop
notification retries or release the request early.
Reported-by: Pan Guihua <pan.guihua@datatom.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Stable-dep-of: f728cfee6929 ("ksmbd: fix app-instance non-durable supersede session UAF")
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/smb/server/ksmbd_work.c | 19
fs/smb/server/ksmbd_work.h | 2
fs/smb/server/mgmt/user_session.c | 31 +
fs/smb/server/mgmt/user_session.h | 3
fs/smb/server/oplock.c | 867 +++++++++++++++++++++-----------------
fs/smb/server/oplock.h | 14
fs/smb/server/vfs_cache.c | 2
7 files changed, 545 insertions(+), 393 deletions(-)
--- a/fs/smb/server/ksmbd_work.c
+++ b/fs/smb/server/ksmbd_work.c
@@ -16,6 +16,7 @@
static struct kmem_cache *work_cache;
static struct workqueue_struct *ksmbd_wq;
+static struct workqueue_struct *ksmbd_break_wq;
static int ksmbd_reserve_iov(struct ksmbd_work *work, int need_iov_cnt)
{
@@ -113,6 +114,12 @@ int ksmbd_workqueue_init(void)
ksmbd_wq = alloc_workqueue("ksmbd-io", WQ_PERCPU, 0);
if (!ksmbd_wq)
return -ENOMEM;
+ ksmbd_break_wq = alloc_workqueue("ksmbd-break", WQ_UNBOUND, 0);
+ if (!ksmbd_break_wq) {
+ destroy_workqueue(ksmbd_wq);
+ ksmbd_wq = NULL;
+ return -ENOMEM;
+ }
return 0;
}
@@ -120,6 +127,8 @@ void ksmbd_workqueue_destroy(void)
{
destroy_workqueue(ksmbd_wq);
ksmbd_wq = NULL;
+ destroy_workqueue(ksmbd_break_wq);
+ ksmbd_break_wq = NULL;
}
bool ksmbd_queue_work(struct ksmbd_work *work)
@@ -127,6 +136,16 @@ bool ksmbd_queue_work(struct ksmbd_work
return queue_work(ksmbd_wq, &work->work);
}
+void ksmbd_queue_io_work(struct work_struct *work)
+{
+ queue_work(ksmbd_wq, work);
+}
+
+void ksmbd_queue_break_work(struct work_struct *work)
+{
+ queue_work(ksmbd_break_wq, work);
+}
+
static inline void __ksmbd_iov_pin(struct ksmbd_work *work, void *ib,
unsigned int ib_len)
{
--- a/fs/smb/server/ksmbd_work.h
+++ b/fs/smb/server/ksmbd_work.h
@@ -156,6 +156,8 @@ int ksmbd_work_pool_init(void);
int ksmbd_workqueue_init(void);
void ksmbd_workqueue_destroy(void);
bool ksmbd_queue_work(struct ksmbd_work *work);
+void ksmbd_queue_io_work(struct work_struct *work);
+void ksmbd_queue_break_work(struct work_struct *work);
int ksmbd_iov_pin_rsp_read(struct ksmbd_work *work, void *ib, int len,
void *aux_buf, unsigned int aux_size);
int ksmbd_iov_pin_rsp(struct ksmbd_work *work, void *ib, int len);
--- a/fs/smb/server/mgmt/user_session.c
+++ b/fs/smb/server/mgmt/user_session.c
@@ -767,6 +767,37 @@ struct ksmbd_session *ksmbd_session_look
return sess;
}
+/* The caller holds a session reference and must put each returned connection. */
+unsigned int ksmbd_session_get_channels(struct ksmbd_session *sess,
+ struct ksmbd_conn **conns,
+ unsigned int max_conns)
+{
+ struct channel *chann;
+ unsigned long index;
+ unsigned int nr_conns = 0;
+
+ /*
+ * Channel connections are borrowed. Unregister can leave the channel
+ * list in a pinned session after removing it from the registry, so
+ * chann_lock alone does not keep those connections alive. Only collect
+ * registered sessions, excluding both unregister and connection cleanup
+ * until the connection references have been taken.
+ */
+ down_read(&sessions_table_lock);
+ if (hlist_unhashed(&sess->hlist))
+ goto out;
+ down_read(&sess->chann_lock);
+ xa_for_each(&sess->ksmbd_chann_list, index, chann) {
+ if (nr_conns == max_conns)
+ break;
+ conns[nr_conns++] = ksmbd_conn_get(chann->conn);
+ }
+ up_read(&sess->chann_lock);
+out:
+ up_read(&sessions_table_lock);
+ return nr_conns;
+}
+
struct ksmbd_session *ksmbd_session_lookup_all_states(struct ksmbd_conn *conn,
unsigned long long id)
{
--- a/fs/smb/server/mgmt/user_session.h
+++ b/fs/smb/server/mgmt/user_session.h
@@ -99,6 +99,9 @@ void ksmbd_session_release_slot(struct k
void ksmbd_session_destroy(struct ksmbd_session *sess);
struct ksmbd_session *ksmbd_session_lookup_slowpath(unsigned long long id);
+unsigned int ksmbd_session_get_channels(struct ksmbd_session *sess,
+ struct ksmbd_conn **conns,
+ unsigned int max_conns);
struct ksmbd_session *ksmbd_session_lookup(struct ksmbd_conn *conn,
unsigned long long id);
bool is_ksmbd_session_in_connection(struct ksmbd_conn *conn,
--- a/fs/smb/server/oplock.c
+++ b/fs/smb/server/oplock.c
@@ -87,6 +87,7 @@ static struct oplock_info *alloc_opinfo(
return NULL;
opinfo->sess = sess;
+ opinfo->session_id = sess->id;
opinfo->conn = ksmbd_conn_get(work->conn);
opinfo->level = SMB2_OPLOCK_LEVEL_NONE;
opinfo->op_state = OPLOCK_STATE_NONE;
@@ -302,15 +303,9 @@ static struct oplock_info *opinfo_get_li
opinfo = list_first_entry_or_null(&ci->m_op_list, struct oplock_info,
op_entry);
if (opinfo) {
- if (opinfo->conn == NULL ||
- !atomic_inc_not_zero(&opinfo->refcount))
+ /* A live open may still be bound to a disconnected channel. */
+ if (!atomic_inc_not_zero(&opinfo->refcount))
opinfo = NULL;
- else {
- if (ksmbd_conn_releasing(opinfo->conn)) {
- atomic_dec(&opinfo->refcount);
- opinfo = NULL;
- }
- }
if (opinfo && snapshot && opinfo->o_fp &&
opinfo->o_fp != skip_fp &&
@@ -367,7 +362,7 @@ static void opinfo_del(struct oplock_inf
lease_del_open(opinfo);
down_write(&ci->m_lock);
- list_del(&opinfo->op_entry);
+ list_del_init(&opinfo->op_entry);
up_write(&ci->m_lock);
}
@@ -639,19 +634,27 @@ static void grant_none_oplock(struct opl
static inline int compare_guid_key(struct oplock_info *opinfo,
const char *guid1, const char *key1)
{
- const char *guid2, *key2;
+ struct lease *lease = opinfo->o_lease;
+ struct lease_table *lb;
struct ksmbd_conn *conn;
+ int ret = 0;
- conn = READ_ONCE(opinfo->conn);
- if (!conn)
+ if (memcmp(key1, lease->lease_key, SMB2_LEASE_KEY_SIZE))
return 0;
- guid2 = conn->ClientGUID;
- key2 = opinfo->o_lease->lease_key;
- if (!memcmp(guid1, guid2, SMB2_CLIENT_GUID_SIZE) &&
- !memcmp(key1, key2, SMB2_LEASE_KEY_SIZE))
- return 1;
- return 0;
+ /* The caller holds ci->m_lock, which protects opinfo->conn. */
+ conn = READ_ONCE(opinfo->conn);
+ if (conn)
+ return !memcmp(guid1, conn->ClientGUID, SMB2_CLIENT_GUID_SIZE);
+
+ /* A detached durable lease retains its client identity in the table. */
+ read_lock(&lease_list_lock);
+ lb = lease->l_lb;
+ if (lb)
+ ret = !memcmp(guid1, lb->client_guid, SMB2_CLIENT_GUID_SIZE);
+ read_unlock(&lease_list_lock);
+
+ return ret;
}
/**
@@ -681,7 +684,7 @@ static struct oplock_info *same_client_h
*/
down_read(&ci->m_lock);
list_for_each_entry(opinfo, &ci->m_op_list, op_entry) {
- if (!opinfo->is_lease || !opinfo->conn)
+ if (!opinfo->is_lease)
continue;
lease = opinfo->o_lease;
@@ -734,35 +737,6 @@ static struct oplock_info *same_client_h
return m_opinfo;
}
-static bool wait_for_break_ack(struct oplock_info *opinfo)
-{
- int rc = 0;
-
- rc = wait_event_interruptible_timeout(opinfo->oplock_q,
- opinfo->op_state == OPLOCK_STATE_NONE ||
- opinfo->op_state == OPLOCK_CLOSING,
- OPLOCK_WAIT_TIME);
-
- /* is this a timeout ? */
- if (!rc) {
- spin_lock(&opinfo->state_lock);
- if (opinfo->op_state == OPLOCK_CLOSING) {
- spin_unlock(&opinfo->state_lock);
- return false;
- }
- if (opinfo->is_lease) {
- opinfo->o_lease->state = SMB2_LEASE_NONE_LE;
- lease_update_oplock_levels(opinfo->o_lease);
- }
- opinfo->level = SMB2_OPLOCK_LEVEL_NONE;
- opinfo->op_state = OPLOCK_STATE_NONE;
- spin_unlock(&opinfo->state_lock);
- return true;
- }
-
- return false;
-}
-
static bool oplock_break_set_ack_wait(struct oplock_info *opinfo)
{
bool ret = false;
@@ -842,330 +816,492 @@ static bool lease_break_needed(struct op
return opinfo->level > req_op_level;
}
-/**
- * __smb2_oplock_break_noti() - send smb2 oplock break cmd from conn
- * to client
- * @wk: smb work object
- *
- * There are two ways this function can be called. 1- while file open we break
- * from exclusive/batch lock to levelII oplock and 2- while file write/truncate
- * we break from levelII oplock no oplock.
- * work->request_buf contains oplock_info.
- */
-static void __smb2_oplock_break_noti(struct work_struct *wk)
+struct smb2_break_channel {
+ struct list_head list;
+ struct ksmbd_conn *conn;
+ struct ksmbd_tx_tracking tracking;
+ bool queued;
+ bool delivered;
+ bool failed;
+};
+
+static bool smb2_break_complete(struct oplock_info *opinfo, bool expect_ack)
{
- struct smb2_oplock_break *rsp = NULL;
- struct ksmbd_work *work = container_of(wk, struct ksmbd_work, work);
- struct ksmbd_conn *conn = work->conn;
- struct oplock_break_info *br_info = work->request_buf;
- struct smb2_hdr *rsp_hdr;
- struct ksmbd_file *fp;
+ bool complete;
- fp = ksmbd_lookup_global_fd(br_info->fid);
- if (!fp)
- goto out;
+ spin_lock(&opinfo->state_lock);
+ complete = opinfo->op_state == OPLOCK_CLOSING ||
+ (expect_ack && opinfo->op_state == OPLOCK_STATE_NONE);
+ spin_unlock(&opinfo->state_lock);
+ return complete;
+}
- if (allocate_interim_rsp_buf(work)) {
- pr_err("smb2_allocate_rsp_buf failed! ");
- ksmbd_fd_put(work, fp);
- goto out;
+static int smb2_break_failed(struct oplock_info *opinfo, bool expect_ack)
+{
+ spin_lock(&opinfo->state_lock);
+ /* An ACK or close which won the race has already completed the break. */
+ if (opinfo->op_state == OPLOCK_CLOSING ||
+ (expect_ack && opinfo->op_state == OPLOCK_STATE_NONE)) {
+ spin_unlock(&opinfo->state_lock);
+ return 0;
}
+ if (opinfo->is_lease) {
+ opinfo->o_lease->state = SMB2_LEASE_NONE_LE;
+ opinfo->o_lease->new_state = SMB2_LEASE_NONE_LE;
+ lease_update_oplock_levels(opinfo->o_lease);
+ atomic_set(&opinfo->breaking_cnt, 0);
+ }
+ opinfo->level = SMB2_OPLOCK_LEVEL_NONE;
+ opinfo->op_state = OPLOCK_STATE_NONE;
+ spin_unlock(&opinfo->state_lock);
+ wake_up_interruptible_all(&opinfo->oplock_q);
+ wake_up_interruptible_all(&opinfo->oplock_brk);
+ return ksmbd_invalidate_durable_fd(opinfo->fid);
+}
- rsp_hdr = smb_get_msg(work->response_buf);
- memset(rsp_hdr, 0, sizeof(struct smb2_hdr) + 2);
- rsp_hdr->ProtocolId = SMB2_PROTO_NUMBER;
- rsp_hdr->StructureSize = SMB2_HEADER_STRUCTURE_SIZE;
- rsp_hdr->CreditRequest = cpu_to_le16(0);
- rsp_hdr->Command = SMB2_OPLOCK_BREAK;
- rsp_hdr->Flags = (SMB2_FLAGS_SERVER_TO_REDIR);
- rsp_hdr->NextCommand = 0;
- rsp_hdr->MessageId = cpu_to_le64(-1);
- rsp_hdr->Id.SyncId.ProcessId = 0;
- rsp_hdr->Id.SyncId.TreeId = 0;
- rsp_hdr->SessionId = 0;
- memset(rsp_hdr->Signature, 0, 16);
-
- rsp = smb_get_msg(work->response_buf);
-
- rsp->StructureSize = cpu_to_le16(24);
- if (!br_info->open_trunc &&
- (br_info->level == SMB2_OPLOCK_LEVEL_BATCH ||
- br_info->level == SMB2_OPLOCK_LEVEL_EXCLUSIVE))
- rsp->OplockLevel = SMB2_OPLOCK_LEVEL_II;
- else
- rsp->OplockLevel = SMB2_OPLOCK_LEVEL_NONE;
- rsp->Reserved = 0;
- rsp->Reserved2 = 0;
- rsp->PersistentFid = fp->persistent_id;
- rsp->VolatileFid = fp->volatile_id;
-
- ksmbd_fd_put(work, fp);
- if (ksmbd_iov_pin_rsp(work, (void *)rsp,
- sizeof(struct smb2_oplock_break)))
- goto out;
-
- ksmbd_debug(OPLOCK,
- "sending oplock break v_id %llu p_id = %llu lock level = %d\n",
- rsp->VolatileFid, rsp->PersistentFid, rsp->OplockLevel);
-
- ksmbd_conn_write(work);
+static int smb2_break_add_channel(struct list_head *head, struct ksmbd_conn *conn)
+{
+ struct smb2_break_channel *channel;
-out:
- ksmbd_free_work_struct(work);
- ksmbd_conn_r_count_dec(conn);
- ksmbd_conn_put(conn);
+ channel = kzalloc_obj(*channel, KSMBD_DEFAULT_GFP);
+ if (!channel)
+ return -ENOMEM;
+ channel->conn = ksmbd_conn_get(conn);
+ list_add_tail(&channel->list, head);
+ return 0;
}
/*
- * Select and pin the connection used for an oplock break before doing any
- * allocations which may sleep. The caller of oplock_break() holds a live
- * reference on ci (a file being opened, a file being operated on, or an
- * explicit ksmbd_inode_lookup_lock() reference in the parent lease break
- * paths), so the inode cannot be freed during the call and its lock is
- * reachable without dereferencing opinfo->o_fp, which is not pinned by
- * the oplock reference and may be freed by a concurrent close.
- *
- * opinfo->conn is cleared under ci->m_lock by session_fd_check() when the
- * durable handle owning the oplock is disconnected, reassigned by
- * ksmbd_reopen_durable_fd() under the same lock, and the last
- * ksmbd_conn_put() of the old connection frees it. Holding the read lock
- * excludes both writers, so the connection cannot be freed while it is
- * selected.
+ * Snapshot connections before sending. References keep their transports alive,
+ * while r_count is taken separately for each write, under request_lock.
*/
-static struct ksmbd_conn *smb2_oplock_break_conn_get(struct oplock_info *opinfo,
- struct ksmbd_inode *ci)
-{
+static int smb2_break_collect_channels(struct oplock_info *opinfo,
+ struct ksmbd_inode *ci,
+ struct smb2_break_channel *owner,
+ struct list_head *head,
+ struct smb2_oplock_break *rsp)
+{
+ struct ksmbd_session *sess = NULL;
+ struct ksmbd_conn *session_conns[KSMBD_MAX_CHANNELS];
+ struct ksmbd_file_table *ft;
+ struct ksmbd_file *fp;
struct ksmbd_conn *conn;
+ struct lease_table *lb;
+ char guid[SMB2_CLIENT_GUID_SIZE];
+ u64 session_id = 0;
+ unsigned int nr_conns, i;
+ bool have_guid = false;
+ int bkt, ret = 0;
+ /* m_lock protects membership and binding, but not the session's lifetime. */
down_read(&ci->m_lock);
- conn = READ_ONCE(opinfo->conn);
- if (conn && !ksmbd_conn_releasing(conn))
- conn = ksmbd_conn_get(conn);
- else
- conn = NULL;
+ if (!list_empty(&opinfo->op_entry)) {
+ if (!opinfo->is_lease) {
+ rsp->PersistentFid = READ_ONCE(opinfo->o_fp->persistent_id);
+ rsp->VolatileFid = READ_ONCE(opinfo->o_fp->volatile_id);
+ if (!has_file_id(rsp->PersistentFid) ||
+ !has_file_id(rsp->VolatileFid)) {
+ /* A detached oplock must take the failed-break path. */
+ ret = opinfo->conn ? -ENOENT : -ENOTCONN;
+ goto unlock;
+ }
+ session_id = opinfo->session_id;
+ }
+ conn = opinfo->conn;
+ if (conn) {
+ owner->conn = ksmbd_conn_get(conn);
+ memcpy(guid, conn->ClientGUID, sizeof(guid));
+ have_guid = true;
+ }
+ } else {
+ ret = -ENOENT;
+ }
+unlock:
up_read(&ci->m_lock);
+ if (ret)
+ return ret;
- return conn;
-}
-
-/**
- * smb2_oplock_break_noti() - send smb2 exclusive/batch to level2 oplock
- * break command from server to client
- * @opinfo: oplock info object
- * @ci: inode owning the break target's oplock list, pinned by
- * the caller
- *
- * Return: 0 on success, otherwise error
- */
-static int smb2_oplock_break_noti(struct oplock_info *opinfo,
- struct ksmbd_inode *ci)
-{
- struct ksmbd_conn *conn;
- struct oplock_break_info *br_info;
- int ret = 0;
- struct ksmbd_work *work;
+ if (opinfo->is_lease && !have_guid) {
+ read_lock(&lease_list_lock);
+ lb = opinfo->o_lease->l_lb;
+ if (lb) {
+ memcpy(guid, lb->client_guid, sizeof(guid));
+ have_guid = true;
+ if (lb->conn)
+ owner->conn = ksmbd_conn_get(lb->conn);
+ }
+ read_unlock(&lease_list_lock);
+ }
+ if (owner->conn)
+ list_add_tail(&owner->list, head);
- conn = smb2_oplock_break_conn_get(opinfo, ci);
- if (!conn)
- return ksmbd_invalidate_durable_fd(opinfo->fid);
+ if (!opinfo->is_lease) {
+ /* Session teardown takes m_lock while holding the session table lock. */
+ sess = ksmbd_session_lookup_slowpath(session_id);
+ if (!sess)
+ return -ENOENT;
- work = ksmbd_alloc_work_struct();
- if (!work) {
- ksmbd_conn_put(conn);
- return -ENOMEM;
+ /* Revalidate the binding and IDs after taking a safe session reference. */
+ down_read(&ci->m_lock);
+ if (list_empty(&opinfo->op_entry) || opinfo->sess != sess) {
+ ret = -ENOENT;
+ } else {
+ ft = &sess->file_table;
+ read_lock(&ft->lock);
+ fp = opinfo->o_fp;
+ if (fp->f_state == FP_CLOSED ||
+ !has_file_id(fp->volatile_id) ||
+ idr_find(ft->idr, fp->volatile_id) != fp) {
+ ret = -ENOENT;
+ } else {
+ rsp->PersistentFid = READ_ONCE(fp->persistent_id);
+ rsp->VolatileFid = fp->volatile_id;
+ }
+ read_unlock(&ft->lock);
+ }
+ up_read(&ci->m_lock);
+ if (ret) {
+ ksmbd_user_session_put(sess);
+ return ret;
+ }
}
- br_info = kmalloc_obj(struct oplock_break_info, KSMBD_DEFAULT_GFP);
- if (!br_info) {
- ksmbd_free_work_struct(work);
- ksmbd_conn_put(conn);
- return -ENOMEM;
+ if (opinfo->is_lease && have_guid) {
+ down_read(&conn_list_lock);
+ hash_for_each(conn_list, bkt, conn, hlist) {
+ if (conn == owner->conn || !ksmbd_conn_good(conn) ||
+ memcmp(conn->ClientGUID, guid, sizeof(guid)))
+ continue;
+ ret = smb2_break_add_channel(head, conn);
+ if (ret)
+ break;
+ }
+ up_read(&conn_list_lock);
+ } else if (!opinfo->is_lease && sess && sess->dialect >= SMB30_PROT_ID) {
+ nr_conns = ksmbd_session_get_channels(sess, session_conns,
+ ARRAY_SIZE(session_conns));
+ for (i = 0; i < nr_conns; i++) {
+ conn = session_conns[i];
+ if (!ret && conn && conn != owner->conn && ksmbd_conn_good(conn))
+ ret = smb2_break_add_channel(head, conn);
+ /* Drop all snapshot references, also on allocation failure. */
+ ksmbd_conn_put(conn);
+ }
}
+ ksmbd_user_session_put(sess);
- br_info->level = opinfo->level;
- br_info->fid = opinfo->fid;
- br_info->open_trunc = opinfo->open_trunc;
-
- work->request_buf = (char *)br_info;
- /* Transfer the reference acquired by smb2_oplock_break_conn_get(). */
- work->conn = conn;
- work->sess = opinfo->sess;
-
- ksmbd_conn_r_count_inc(conn);
- if (opinfo->op_state == OPLOCK_ACK_WAIT) {
- INIT_WORK(&work->work, __smb2_oplock_break_noti);
- ksmbd_queue_work(work);
-
- if (wait_for_break_ack(opinfo))
- ret = ksmbd_invalidate_durable_fd(opinfo->fid);
- } else {
- __smb2_oplock_break_noti(&work->work);
- if (opinfo->level == SMB2_OPLOCK_LEVEL_II)
- opinfo->level = SMB2_OPLOCK_LEVEL_NONE;
- }
- return ret;
+ /* Allocation pressure may limit retries, but must not discard the owner. */
+ return list_empty(head) ? (ret ?: -ENOTCONN) : 0;
}
-/**
- * __smb2_lease_break_noti() - send lease break command from server
- * to client
- * @wk: smb work object
- */
-static void __smb2_lease_break_noti(struct work_struct *wk)
+static bool smb2_break_delivered(struct list_head *head, bool require_live)
{
- struct smb2_lease_break *rsp = NULL;
- struct ksmbd_work *work = container_of(wk, struct ksmbd_work, work);
- struct ksmbd_conn *conn = work->conn;
- struct lease_break_info *br_info = work->request_buf;
- struct smb2_hdr *rsp_hdr;
+ struct smb2_break_channel *channel;
+ struct ksmbd_conn *conn;
- if (allocate_interim_rsp_buf(work)) {
- ksmbd_debug(OPLOCK, "smb2_allocate_rsp_buf failed! ");
- goto out;
+ list_for_each_entry(channel, head, list) {
+ conn = channel->conn;
+ if (!channel->queued || (require_live && !ksmbd_conn_good(conn)))
+ continue;
+ /* A synchronous send needs no separate delivery probe. */
+ if (channel->delivered || !channel->tracking.valid ||
+ conn->transport->ops->is_acked(conn->transport,
+ &channel->tracking)) {
+ channel->delivered = true;
+ return true;
+ }
}
-
- rsp_hdr = smb_get_msg(work->response_buf);
- memset(rsp_hdr, 0, sizeof(struct smb2_hdr) + 2);
- rsp_hdr->ProtocolId = SMB2_PROTO_NUMBER;
- rsp_hdr->StructureSize = SMB2_HEADER_STRUCTURE_SIZE;
- rsp_hdr->CreditRequest = cpu_to_le16(0);
- rsp_hdr->Command = SMB2_OPLOCK_BREAK;
- rsp_hdr->Flags = (SMB2_FLAGS_SERVER_TO_REDIR);
- rsp_hdr->NextCommand = 0;
- rsp_hdr->MessageId = cpu_to_le64(-1);
- rsp_hdr->Id.SyncId.ProcessId = 0;
- rsp_hdr->Id.SyncId.TreeId = 0;
- rsp_hdr->SessionId = 0;
- memset(rsp_hdr->Signature, 0, 16);
-
- rsp = smb_get_msg(work->response_buf);
- rsp->StructureSize = cpu_to_le16(44);
- rsp->Epoch = br_info->epoch;
- rsp->Flags = 0;
-
- if (br_info->curr_state & (SMB2_LEASE_WRITE_CACHING_LE |
- SMB2_LEASE_HANDLE_CACHING_LE))
- rsp->Flags = SMB2_NOTIFY_BREAK_LEASE_FLAG_ACK_REQUIRED;
-
- memcpy(rsp->LeaseKey, br_info->lease_key, SMB2_LEASE_KEY_SIZE);
- rsp->CurrentLeaseState = br_info->curr_state;
- rsp->NewLeaseState = br_info->new_state;
- rsp->BreakReason = 0;
- rsp->AccessMaskHint = 0;
- rsp->ShareMaskHint = 0;
-
- if (ksmbd_iov_pin_rsp(work, (void *)rsp,
- sizeof(struct smb2_lease_break)))
- goto out;
-
- ksmbd_conn_write(work);
-
-out:
- ksmbd_free_work_struct(work);
- ksmbd_conn_r_count_dec(conn);
- ksmbd_conn_put(conn);
+ return false;
}
-/*
- * Select and pin the connection used for a lease break before doing any
- * allocations which may sleep. opinfo->conn is cleared under ci->m_lock,
- * while lease->l_lb and the lease table lifetime are protected by
- * lease_list_lock.
- */
-static struct ksmbd_conn *smb2_lease_break_conn_get(struct oplock_info *opinfo)
+static bool smb2_break_has_unsent_channels(struct list_head *head)
{
- struct lease *lease = opinfo->o_lease;
- struct lease_table *lb;
- struct ksmbd_conn *conn;
+ struct smb2_break_channel *channel;
- /* Keep the connection which owns the open, when it is still active. */
- down_read(&lease->ci->m_lock);
- conn = READ_ONCE(opinfo->conn);
- if (conn && !ksmbd_conn_releasing(conn))
- conn = ksmbd_conn_get(conn);
- else
- conn = NULL;
- up_read(&lease->ci->m_lock);
-
- if (conn || lease->version != 2)
- return conn;
+ list_for_each_entry(channel, head, list) {
+ if (!channel->queued && !channel->failed)
+ return true;
+ }
+ return false;
+}
- /* Otherwise route v2 lease breaks through the shared lease channel. */
- read_lock(&lease_list_lock);
- lb = lease->l_lb;
- if (lb && lb->conn && !ksmbd_conn_releasing(lb->conn))
- conn = ksmbd_conn_get(lb->conn);
- read_unlock(&lease_list_lock);
+static int smb2_break_wait(struct oplock_info *opinfo, struct list_head *head,
+ struct smb2_break_channel *sent_channel,
+ bool expect_ack, bool wait_ack, bool can_retry,
+ unsigned long retry_at, unsigned long deadline)
+{
+ unsigned long remaining;
+ long ret;
- return conn;
+ for (;;) {
+ if (smb2_break_complete(opinfo, expect_ack))
+ return 0;
+ if (!wait_ack && smb2_break_delivered(head, false))
+ return 0;
+ if (time_after_eq(jiffies, deadline))
+ return -ETIMEDOUT;
+ /* TCP delivery followed by a slow SMB ACK is not a send failure. */
+ if (can_retry && !smb2_break_delivered(head, true) &&
+ ((sent_channel && !ksmbd_conn_good(sent_channel->conn)) ||
+ time_after_eq(jiffies, retry_at)))
+ return -EAGAIN;
+
+ remaining = min_t(unsigned long, deadline - jiffies,
+ max_t(unsigned long, 1, HZ / 10));
+ ret = wait_event_interruptible_timeout(opinfo->oplock_q,
+ smb2_break_complete(opinfo, expect_ack),
+ remaining);
+ if (ret < 0)
+ return ret;
+ }
}
-/**
- * smb2_lease_break_noti() - break lease when a new client request
- * write lease
- * @opinfo: contains lease state information
- * @sync: send the lease break notification synchronously
- * @inc_epoch: increment the lease epoch before sending the break
- *
- * Return: 0 on success, otherwise error
- */
-static int smb2_lease_break_noti(struct oplock_info *opinfo, bool sync,
- bool inc_epoch)
+static void smb2_break_init_header(struct smb2_hdr *hdr)
+{
+ memset(hdr, 0, sizeof(*hdr));
+ hdr->ProtocolId = SMB2_PROTO_NUMBER;
+ hdr->StructureSize = SMB2_HEADER_STRUCTURE_SIZE;
+ hdr->Command = SMB2_OPLOCK_BREAK;
+ hdr->Flags = SMB2_FLAGS_SERVER_TO_REDIR;
+ hdr->MessageId = cpu_to_le64(-1);
+}
+
+/* Build one notification and reuse its payload and epoch on each connection. */
+static int smb2_break_notify(struct oplock_info *opinfo, struct ksmbd_inode *ci,
+ bool expect_ack, bool wait_ack, bool inc_epoch,
+ struct work_struct *interim_work)
{
- struct ksmbd_conn *conn;
+ struct smb2_break_channel owner = {}, *channel, *tmp, *last = NULL;
struct ksmbd_work *work;
- struct lease_break_info *br_info;
+ struct smb2_oplock_break *oplock_rsp;
+ struct smb2_lease_break *lease_rsp;
struct lease *lease = opinfo->o_lease;
-
- conn = smb2_lease_break_conn_get(opinfo);
- if (!conn)
- return ksmbd_invalidate_durable_fd(opinfo->fid);
-
+ unsigned long deadline, retry_at;
+ int ret, size;
+ LIST_HEAD(channels);
+
+ if (smb2_break_complete(opinfo, expect_ack)) {
+ ret = 0;
+ goto out_interim;
+ }
+ wait_ack = wait_ack && expect_ack;
work = ksmbd_alloc_work_struct();
if (!work) {
- ksmbd_conn_put(conn);
- return -ENOMEM;
+ ret = smb2_break_failed(opinfo, expect_ack);
+ goto out_interim;
}
+ ret = allocate_interim_rsp_buf(work);
+ if (ret)
+ goto failed;
+ oplock_rsp = smb_get_msg(work->response_buf);
+ smb2_break_init_header(&oplock_rsp->hdr);
- br_info = kmalloc_obj(struct lease_break_info, KSMBD_DEFAULT_GFP);
- if (!br_info) {
- ksmbd_free_work_struct(work);
- ksmbd_conn_put(conn);
- return -ENOMEM;
- }
+ ret = smb2_break_collect_channels(opinfo, ci, &owner, &channels, oplock_rsp);
+ if (ret == -ENOENT)
+ goto out;
+ if (ret)
+ goto failed;
- br_info->curr_state = lease->state;
- br_info->new_state = lease->new_state;
- if (lease->version == 2) {
- if (inc_epoch)
- lease->epoch++;
- br_info->epoch = cpu_to_le16(lease->epoch);
- } else {
- br_info->epoch = 0;
+ spin_lock(&opinfo->state_lock);
+ if (opinfo->op_state == OPLOCK_CLOSING ||
+ (expect_ack && opinfo->op_state == OPLOCK_STATE_NONE)) {
+ spin_unlock(&opinfo->state_lock);
+ ret = 0;
+ goto out;
}
- memcpy(br_info->lease_key, lease->lease_key, SMB2_LEASE_KEY_SIZE);
-
- work->request_buf = (char *)br_info;
- /* Transfer the reference acquired by smb2_lease_break_conn_get(). */
- work->conn = conn;
- work->sess = opinfo->sess;
-
- ksmbd_conn_r_count_inc(conn);
- if (opinfo->op_state == OPLOCK_ACK_WAIT) {
- if (sync) {
- __smb2_lease_break_noti(&work->work);
- } else {
- INIT_WORK(&work->work, __smb2_lease_break_noti);
- ksmbd_queue_work(work);
+ if (opinfo->is_lease) {
+ lease_rsp = smb_get_msg(work->response_buf);
+ lease_rsp->StructureSize = cpu_to_le16(44);
+ if (lease->version == 2) {
+ if (inc_epoch)
+ lease->epoch++;
+ lease_rsp->Epoch = cpu_to_le16(lease->epoch);
}
+ if (lease->state & (SMB2_LEASE_WRITE_CACHING_LE |
+ SMB2_LEASE_HANDLE_CACHING_LE))
+ lease_rsp->Flags = SMB2_NOTIFY_BREAK_LEASE_FLAG_ACK_REQUIRED;
+ memcpy(lease_rsp->LeaseKey, lease->lease_key, SMB2_LEASE_KEY_SIZE);
+ lease_rsp->CurrentLeaseState = lease->state;
+ lease_rsp->NewLeaseState = lease->new_state;
+ size = sizeof(*lease_rsp);
} else {
- __smb2_lease_break_noti(&work->work);
- if (opinfo->o_lease->new_state == SMB2_LEASE_NONE_LE) {
- opinfo->o_lease->state = SMB2_LEASE_NONE_LE;
- lease_update_oplock_levels(opinfo->o_lease);
+ oplock_rsp->StructureSize = cpu_to_le16(24);
+ oplock_rsp->OplockLevel = !opinfo->open_trunc &&
+ (opinfo->level == SMB2_OPLOCK_LEVEL_BATCH ||
+ opinfo->level == SMB2_OPLOCK_LEVEL_EXCLUSIVE) ?
+ SMB2_OPLOCK_LEVEL_II : SMB2_OPLOCK_LEVEL_NONE;
+ /*
+ * A level II break needs no ACK. Publish NONE before sending so
+ * an unsolicited ACK cannot observe II while delivery is pending.
+ */
+ if (!expect_ack)
+ opinfo->level = SMB2_OPLOCK_LEVEL_NONE;
+ size = sizeof(*oplock_rsp);
+ }
+ spin_unlock(&opinfo->state_lock);
+ ret = ksmbd_iov_pin_rsp(work, oplock_rsp, size);
+ if (ret)
+ goto failed;
+
+ deadline = jiffies + OPLOCK_WAIT_TIME;
+retry:
+ list_for_each_entry(channel, &channels, list) {
+ if (channel->queued || channel->failed)
+ continue;
+ if (smb2_break_complete(opinfo, expect_ack)) {
+ ret = 0;
+ goto out;
+ }
+ if (time_after_eq(jiffies, deadline)) {
+ ret = -ETIMEDOUT;
+ break;
+ }
+ if (!ksmbd_conn_r_count_inc_if_good(channel->conn)) {
+ channel->failed = true;
+ ret = -ENOTCONN;
+ continue;
+ }
+ work->conn = channel->conn;
+ ret = ksmbd_conn_write_tracked(work, &channel->tracking);
+ ksmbd_conn_r_count_dec(channel->conn);
+ if (ret) {
+ /* Only a nonblocking send guarantees no bytes on -EAGAIN. */
+ if (ret != -EAGAIN || !channel->conn->transport->ops->is_acked)
+ channel->failed = true;
+ continue;
+ }
+ channel->queued = true;
+ if (interim_work) {
+ ksmbd_queue_io_work(interim_work);
+ interim_work = NULL;
+ }
+ last = channel;
+ retry_at = jiffies + channel->tracking.retry_after;
+ ret = smb2_break_wait(opinfo, &channels, channel, expect_ack,
+ wait_ack, smb2_break_has_unsent_channels(&channels),
+ retry_at, deadline);
+ if (ret != -EAGAIN)
+ goto done;
+ }
+ if (smb2_break_has_unsent_channels(&channels)) {
+ /* Allow busy writers to make progress before another nonblocking pass. */
+ retry_at = jiffies + max_t(unsigned long, 1, HZ / 10);
+ ret = smb2_break_wait(opinfo, &channels, NULL, expect_ack,
+ wait_ack, true, retry_at, deadline);
+ if (ret == -EAGAIN)
+ goto retry;
+ } else if (last) {
+ /* Give already queued notifications the rest of the shared wait. */
+ ret = smb2_break_wait(opinfo, &channels, last, expect_ack,
+ wait_ack, false, deadline, deadline);
+ }
+
+done:
+ if (ret)
+ goto failed;
+ if (!expect_ack && opinfo->is_lease) {
+ spin_lock(&opinfo->state_lock);
+ if (opinfo->op_state != OPLOCK_CLOSING) {
+ lease->state = lease->new_state;
+ lease_update_oplock_levels(lease);
}
+ spin_unlock(&opinfo->state_lock);
}
- return 0;
+ goto out;
+failed:
+ ret = smb2_break_failed(opinfo, expect_ack);
+out:
+ ksmbd_free_work_struct(work);
+ list_for_each_entry_safe(channel, tmp, &channels, list) {
+ list_del(&channel->list);
+ ksmbd_conn_put(channel->conn);
+ if (channel != &owner)
+ kfree(channel);
+ }
+out_interim:
+ if (interim_work)
+ ksmbd_queue_io_work(interim_work);
+ return ret;
+}
+
+struct smb2_interim_work {
+ struct work_struct work;
+ struct ksmbd_work *in_work;
+};
+
+static void smb2_break_interim_work(struct work_struct *work)
+{
+ struct smb2_interim_work *iw = container_of(work, struct smb2_interim_work, work);
+
+ if (!setup_async_work(iw->in_work, NULL, NULL)) {
+ smb2_send_interim_resp(iw->in_work, STATUS_PENDING);
+ release_async_work(iw->in_work);
+ }
+}
+
+struct smb2_break_work {
+ struct work_struct work;
+ struct oplock_info *opinfo;
+ struct ksmbd_inode *ci;
+ bool expect_ack;
+ bool wait_ack;
+ bool inc_epoch;
+ int ret;
+};
+
+static void smb2_break_notify_work(struct work_struct *work)
+{
+ struct smb2_break_work *bw = container_of(work, struct smb2_break_work, work);
+
+ bw->ret = smb2_break_notify(bw->opinfo, bw->ci, bw->expect_ack,
+ bw->wait_ack, bw->inc_epoch, NULL);
+}
+
+static int smb2_break_notify_with_interim(struct oplock_info *opinfo,
+ struct ksmbd_inode *ci,
+ bool expect_ack, bool wait_ack,
+ bool inc_epoch, struct ksmbd_work *in_work,
+ bool notify_first)
+{
+ struct smb2_break_work bw = {
+ .opinfo = opinfo,
+ .ci = ci,
+ .expect_ack = expect_ack,
+ .wait_ack = wait_ack,
+ .inc_epoch = inc_epoch,
+ };
+
+ if (!in_work)
+ return smb2_break_notify(opinfo, ci, expect_ack, wait_ack, inc_epoch, NULL);
+
+ if (notify_first) {
+ struct smb2_interim_work iw = { .in_work = in_work };
+ int ret;
+
+ /*
+ * Rename sends the first notification in the request context.
+ * Queue the interim writer after that send so a blocked response
+ * cannot stop notification retries or the break ACK wait.
+ */
+ INIT_WORK_ONSTACK(&iw.work, smb2_break_interim_work);
+ ret = smb2_break_notify(opinfo, ci, expect_ack, wait_ack,
+ inc_epoch, &iw.work);
+ flush_work(&iw.work);
+ destroy_work_on_stack(&iw.work);
+ return ret;
+ }
+
+ /* A blocked interim writer must not stop notification sends or retries. */
+ INIT_WORK_ONSTACK(&bw.work, smb2_break_notify_work);
+ ksmbd_queue_break_work(&bw.work);
+ if (!setup_async_work(in_work, NULL, NULL)) {
+ smb2_send_interim_resp(in_work, STATUS_PENDING);
+ release_async_work(in_work);
+ }
+ /* The caller keeps opinfo and ci alive until the notifier has finished. */
+ flush_work(&bw.work);
+ destroy_work_on_stack(&bw.work);
+ return bw.ret;
}
static void wait_lease_breaking(struct oplock_info *opinfo)
@@ -1187,10 +1323,11 @@ static void wait_lease_breaking(struct o
static int oplock_break(struct oplock_info *brk_opinfo, struct ksmbd_inode *ci,
int req_op_level, struct ksmbd_work *in_work,
- bool share_break, bool sync_lease_break)
+ bool share_break, bool notify_first)
{
int err = 0;
bool sent_interim = false;
+ bool expect_ack = false;
/* Need to break exclusive/batch oplock, write lease or overwrite_if */
ksmbd_debug(OPLOCK,
@@ -1248,8 +1385,9 @@ again:
}
}
- if (lease->state & (SMB2_LEASE_WRITE_CACHING_LE |
- SMB2_LEASE_HANDLE_CACHING_LE)) {
+ expect_ack = lease->state & (SMB2_LEASE_WRITE_CACHING_LE |
+ SMB2_LEASE_HANDLE_CACHING_LE);
+ if (expect_ack) {
if (!oplock_break_set_ack_wait(brk_opinfo)) {
atomic_dec_if_positive(&brk_opinfo->breaking_cnt);
clear_and_wake_up_bit(0, &brk_opinfo->pending_break);
@@ -1265,16 +1403,12 @@ again:
inc_epoch = false;
lease->reuse_epoch = false;
}
- err = smb2_lease_break_noti(brk_opinfo, sync_lease_break, inc_epoch);
+ err = smb2_break_notify_with_interim(brk_opinfo, ci, expect_ack,
+ wait_ack, inc_epoch,
+ sent_interim ? NULL : in_work,
+ notify_first);
+ sent_interim = true;
inc_epoch = false;
- if (in_work && !sent_interim) {
- setup_async_work(in_work, NULL, NULL);
- smb2_send_interim_resp(in_work, STATUS_PENDING);
- release_async_work(in_work);
- sent_interim = true;
- }
- if (wait_ack && !err && wait_for_break_ack(brk_opinfo))
- err = ksmbd_invalidate_durable_fd(brk_opinfo->fid);
ksmbd_debug(OPLOCK, "oplock granted = %d\n", brk_opinfo->level);
if (brk_opinfo->op_state == OPLOCK_CLOSING)
@@ -1310,26 +1444,16 @@ again:
if (brk_opinfo->level == SMB2_OPLOCK_LEVEL_BATCH ||
brk_opinfo->level == SMB2_OPLOCK_LEVEL_EXCLUSIVE) {
+ expect_ack = true;
if (!oplock_break_set_ack_wait(brk_opinfo)) {
clear_and_wake_up_bit(0, &brk_opinfo->pending_break);
return -ENOENT;
}
}
-
- /*
- * Keep a conflicting CREATE asynchronous while waiting for an
- * oplock-break acknowledgement. Besides avoiding a blocked client
- * request, this lets a replay arrive while the original CREATE is
- * still pending and be rejected with FILE_NOT_AVAILABLE.
- */
- if (in_work) {
- setup_async_work(in_work, NULL, NULL);
- smb2_send_interim_resp(in_work, STATUS_PENDING);
- release_async_work(in_work);
- }
}
- err = smb2_oplock_break_noti(brk_opinfo, ci);
+ err = smb2_break_notify_with_interim(brk_opinfo, ci, expect_ack,
+ true, false, in_work, false);
ksmbd_debug(OPLOCK, "oplock granted = %d\n", brk_opinfo->level);
if (brk_opinfo->op_state == OPLOCK_CLOSING)
@@ -1491,7 +1615,7 @@ void smb_send_parent_lease_break_noti(st
down_read(&p_ci->m_lock);
list_for_each_entry(opinfo, &p_ci->m_op_list, op_entry) {
- if (opinfo->conn == NULL || !opinfo->is_lease)
+ if (!opinfo->is_lease)
continue;
if (opinfo->o_lease->state != SMB2_OPLOCK_LEVEL_NONE &&
@@ -1502,11 +1626,6 @@ void smb_send_parent_lease_break_noti(st
if (!atomic_inc_not_zero(&opinfo->refcount))
continue;
- if (ksmbd_conn_releasing(opinfo->conn)) {
- opinfo_put(opinfo);
- continue;
- }
-
if (oplock_break_add(&brk_list, opinfo))
opinfo_put(opinfo);
}
@@ -1539,18 +1658,13 @@ void smb_lazy_parent_lease_break_close(s
down_read(&p_ci->m_lock);
list_for_each_entry(opinfo, &p_ci->m_op_list, op_entry) {
- if (opinfo->conn == NULL || !opinfo->is_lease)
+ if (!opinfo->is_lease)
continue;
if (opinfo->o_lease->state != SMB2_OPLOCK_LEVEL_NONE) {
if (!atomic_inc_not_zero(&opinfo->refcount))
continue;
- if (ksmbd_conn_releasing(opinfo->conn)) {
- opinfo_put(opinfo);
- continue;
- }
-
if (oplock_break_add(&brk_list, opinfo))
opinfo_put(opinfo);
}
@@ -1699,7 +1813,11 @@ int smb_grant_oplock(struct ksmbd_work *
err = oplock_break(prev_opinfo, ci, break_level, work,
share_ret < 0 && prev_opinfo->is_lease, false);
- if (prev_durable_detached || (prev_durable_open && err == -ENOENT))
+ /* Keep a detached durable lease if its break retains handle caching. */
+ if ((prev_durable_detached &&
+ (!prev_op_has_lease ||
+ !(prev_opinfo->o_lease->state & SMB2_LEASE_HANDLE_CACHING_LE))) ||
+ (prev_durable_open && err == -ENOENT))
ksmbd_invalidate_durable_fd(prev_fid);
opinfo_put(prev_opinfo);
if (err == -EAGAIN) {
@@ -1803,8 +1921,7 @@ static bool smb_break_all_write_oplock(s
}
brk_opinfo->open_trunc = is_trunc;
- oplock_break(brk_opinfo, fp->f_ci, SMB2_OPLOCK_LEVEL_II, work, false,
- false);
+ oplock_break(brk_opinfo, fp->f_ci, SMB2_OPLOCK_LEVEL_II, work, false, false);
sent_break = true;
opinfo_put(brk_opinfo);
@@ -1819,12 +1936,12 @@ static bool smb_break_all_write_oplock(s
* @is_trunc: truncate on open
* @send_interim: send interim response to the client
* @send_oplock_break: send oplock break notification to the client
- * @sync_lease_break: send the lease break notification synchronously
+ * @notify_first: send the lease break notification before the interim response
*/
static void __smb_break_all_levII_oplock(struct ksmbd_work *work,
struct ksmbd_file *fp, int is_trunc,
bool send_interim, bool send_oplock_break,
- bool sync_lease_break)
+ bool notify_first)
{
struct oplock_info *op, *brk_op;
struct oplock_break_entry *ent, *tmp;
@@ -1842,17 +1959,9 @@ static void __smb_break_all_levII_oplock
down_read(&ci->m_lock);
list_for_each_entry(brk_op, &ci->m_op_list, op_entry) {
- if (brk_op->conn == NULL)
- continue;
-
if (!atomic_inc_not_zero(&brk_op->refcount))
continue;
- if (ksmbd_conn_releasing(brk_op->conn)) {
- opinfo_put(brk_op);
- continue;
- }
-
if (!brk_op->is_lease &&
brk_op->level != SMB2_OPLOCK_LEVEL_II) {
ksmbd_debug(OPLOCK, "unexpected oplock(0x%x)\n",
@@ -1867,10 +1976,8 @@ static void __smb_break_all_levII_oplock
goto next;
if (op && op->is_lease && brk_op->is_lease &&
- !memcmp(conn->ClientGUID, brk_op->conn->ClientGUID,
- SMB2_CLIENT_GUID_SIZE) &&
- !memcmp(op->o_lease->lease_key, brk_op->o_lease->lease_key,
- SMB2_LEASE_KEY_SIZE))
+ compare_guid_key(brk_op, conn->ClientGUID,
+ op->o_lease->lease_key))
goto next;
brk_op->open_trunc = is_trunc;
@@ -1900,7 +2007,7 @@ next:
brk_op->is_lease && !is_trunc ?
SMB2_OPLOCK_LEVEL_II : SMB2_OPLOCK_LEVEL_NONE,
send_interim && !sent_interim ? work : NULL,
- false, sync_lease_break);
+ false, notify_first);
}
sent_interim = true;
list_del(&ent->list);
--- a/fs/smb/server/oplock.h
+++ b/fs/smb/server/oplock.h
@@ -62,6 +62,7 @@ struct lease {
struct oplock_info {
struct ksmbd_conn *conn;
struct ksmbd_session *sess;
+ u64 session_id;
struct ksmbd_work *work;
struct ksmbd_file *o_fp;
int level;
@@ -82,19 +83,6 @@ struct oplock_info {
struct rcu_head rcu;
};
-struct lease_break_info {
- __le32 curr_state;
- __le32 new_state;
- __le16 epoch;
- char lease_key[SMB2_LEASE_KEY_SIZE];
-};
-
-struct oplock_break_info {
- int level;
- int open_trunc;
- int fid;
-};
-
int smb_grant_oplock(struct ksmbd_work *work, int req_op_level,
u64 pid, struct ksmbd_file *fp, __u16 tid,
struct lease_ctx_info *lctx, int share_ret, bool replay);
--- a/fs/smb/server/vfs_cache.c
+++ b/fs/smb/server/vfs_cache.c
@@ -1815,6 +1815,7 @@ static bool session_fd_check(struct ksmb
ksmbd_conn_put(op->conn);
op->conn = NULL;
op->sess = NULL;
+ op->session_id = 0;
}
up_write(&ci->m_lock);
@@ -1995,6 +1996,7 @@ int ksmbd_reopen_durable_fd(struct ksmbd
continue;
op->conn = ksmbd_conn_get(fp->conn);
op->sess = work->sess;
+ op->session_id = work->sess->id;
}
up_write(&ci->m_lock);
next prev parent reply other threads:[~2026-11-04 21:54 UTC|newest]
Thread overview: 561+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-04 21:03 [PATCH 7.3 000/547] 7.3.2-rc1 review Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 001/547] net: skbuff: propagate shared-frag marker in skb_zerocopy() Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 002/547] ksmbd: wait for negotiation before receiving another PDU Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 003/547] smb: smbdirect: dont wait for RDMA_CM_EVENT_DISCONNECTED in smbdirect_socket_destroy_sync() Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 004/547] smb: smbdirect: release failed pending sockets of a listener Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 005/547] smb: smbdirect: dont hand out already failed sockets in smbdirect_socket_accept() Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 006/547] ksmbd: reject FSCTL_SET_ZERO_DATA on a directory handle Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 007/547] wifi: ath12k: move dp_profile_params to dp.h Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 008/547] wifi: ath12k: convert DP_TX_COMP_RING_SIZE to inline helper Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 009/547] wifi: ath12k: convert DP_RXDMA_MONITOR_BUF_RING_SIZE " Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 010/547] wifi: ath12k: convert DP_RXDMA_MONITOR_DST_RING_SIZE " Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 011/547] wifi: ath12k: convert ATH12K_NUM_POOL_TX_DESC " Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 012/547] wifi: ath12k: convert ATH12K_RX_DESC_COUNT " Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 013/547] wifi: ath12k: convert DP_RX_RELEASE_RING_SIZE " Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 014/547] wifi: ath12k: Make RXDMA buffer ring size configurable per memory profile Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 015/547] wifi: ath12k: Increase RXDMA buffer ring size for default " Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 016/547] platform: cznic: turris-omnia-mcu: Add missing MODULE_DEVICE_TABLE() Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 017/547] io_uring/waitid: own the request before clearing ->head Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 018/547] io_uring/cmd: dont leave list poison in ->hash_node Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 019/547] io_uring/wait: dont spin on a stuck overflow list Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 020/547] io_uring/io-wq: dont lose the signal that ends work Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 021/547] io_uring/io-wq: dont hide a link from cancellations Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 022/547] io_uring: dont flood a cancelling task with task_work Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 023/547] io_uring: dont lose the DEFER_TASKRUN wake up Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 024/547] io_uring/cancel: rearm local work wake up before sleep Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 025/547] io_uring/mpscq: disable preemption while pushing Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 026/547] io_uring/io-wq: dont go to sleep on pending work Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 027/547] io_uring/io-wq: dont strand work when a worker exits Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 028/547] io_uring/io-wq: dont exit with a creation pending Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 029/547] io_uring/io-wq: let cancel find picked up hashed work Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 030/547] io_uring/poll: dont lose a cancel as io-wq arms poll Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 031/547] io_uring: dont lose a cancel as io-wq parks a request Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 032/547] io_uring/cancel: dont forget that the work was running Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 033/547] io_uring/cancel: recognize "no timeout" on 32-bit Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 034/547] io_uring/cancel: let CANCEL_ALL find parked requests Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 035/547] io_uring: wake ring pollers for local task_work Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 036/547] io_uring/wait: look at all CQ waiters on wake up Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 037/547] io_uring/poll: drop stale double poll entry on rearm Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 038/547] io_uring/futex: allocate private hash before waiting Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 039/547] io_uring: drop the CQE cache if a refill fails Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 040/547] io_uring: dont split 128b SQEs at the SQPOLL cap Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 041/547] io_uring/register: dont wrap 32b CQEs when resizing Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 042/547] io_uring/register: handle index wrap " Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 043/547] io_uring/register: keep 128b SQEs intact on resize Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 044/547] io_uring/fdinfo: fix CQE dump of CQE32 rings Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 045/547] io_uring/timeout: dont skip over reached sequences Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 046/547] io_uring/timeout: keep repeat count on multishot update Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 047/547] io_uring/timeout: use the right clock for ABS updates Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 048/547] io_uring/wait: no early -ETIME if min_wait finds work Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 049/547] io_uring/napi: make stale entries time out after 60s Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 050/547] io_uring/napi: dont busy poll past an expired timeout Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 051/547] io_uring/zcrx: fix buffer offsets in areas above 4GB Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 052/547] io_uring/kbuf: handle index wrap in last buffer check Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 053/547] io_uring/sqpoll: let the thread sleep on disabled rings Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 054/547] io_uring/openclose: keep the lock in io_pipe_fixed() Greg Kroah-Hartman
2026-11-04 21:03 ` [PATCH 7.3 055/547] io_uring: dont pass restart error codes to userspace Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 056/547] io_uring/net: dont retry recv on uncommitted buffers Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 057/547] io_uring/timeout: no ABS update of multishot timeouts Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 058/547] io_uring/timeout: dont end a linked timeout with 1 Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 059/547] io_uring: look up the file before queueing to io-wq Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 060/547] io_uring/timeout: dont put a sequence target behind the last flush Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 061/547] io_uring/timeout: dont flush with the sequence " Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 062/547] io_uring/timeout: dont lose a cancel as io-wq arms a timeout Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 063/547] exec: cancel io_uring requests before de_thread() Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 064/547] fork: move the coredump and exec checks into create_io_thread() Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 065/547] fork: dont create io threads once PF_POSTCOREDUMP is set Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 066/547] clk: renesas: r9a08g046: Propagate clk rate for ETH TX mux clocks Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 067/547] ALSA: line6: Clear prev_fbuf on capture buffer release Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 068/547] Bluetooth: forget a peers RPA once it advertises its identity address Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 069/547] wifi: mt76: mt7925: fix reset panic caused by the WM2 rx irq mask Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 070/547] ARM: 9524/1: mm: align hugetlb mappings to the huge page size Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 071/547] blk-crypto: fix NULL deref and UAF in __blk_crypto_evict_key() Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 072/547] ceph: fail readdir when the MDS reply carries no dirfrag Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 073/547] fuse: dont BUG when the copy buffer is exhausted Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 074/547] kcov: ignore an out-of-range comparison count in write_comp_data() Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 075/547] kcsan: Avoid division by zero in kcsan_prandom_u32_max() Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 076/547] ksmbd: serialize directory emptiness checks with readdir Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 077/547] libceph: bound mon_command ack decode to front len Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 078/547] media: cx88: Disable PCI device on MPEG initialization failure Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 079/547] media: em28xx: reject audio endpoint with zero packet size Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 080/547] media: go7007: only set audio_enabled if go7007_snd_init() succeeded Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 081/547] media: usbtv: fix null-pointer dereference on disconnect Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 082/547] net: ipv4: add zero check for snd_cwnd_clamp Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 083/547] net: usb: pegasus: do not advance rx_skb->data on dropped frames Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 084/547] nfsd: fix race between client_info_show() and free_client() Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 085/547] ocfs2/dlm: drain join handlers before releasing module text Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 086/547] ocfs2: drain quorum work before removing the cluster Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 087/547] ocfs2: pin owning modules for open debugfs files Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 088/547] ocfs2: publish the filecheck owner before adding sysfs attributes Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 089/547] smb: client: do not pass a NULL buf to is_oplock_break() Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 090/547] smb: client: fix early procfs exposure race Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 091/547] thunderbolt: Do not RPM complete unrelated subtrees on unplug Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 092/547] udf: fix return value for non-recorded-allocated extents in udf_map_block() Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 093/547] wwan: wwan_hwsim: Pin module for debugfs file operations Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 094/547] xfs: fix integer overflow problem when setting large free areas Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 095/547] dt-bindings: interrupt-controller: gicv5: Relax IRS properties constraints Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 096/547] irqchip/gic-v5: Fix standalone IRSes OF probe Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 097/547] serial: core: fix TIOCSSERIAL and TIOCSERCONFIG on uninitialised ports Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 098/547] net/sched: cls_bpf: accept dev-bound programs on shared blocks Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 099/547] net/sched: cls_flower: avoid stale mask references after delete Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 100/547] net/sched: sch_teql: fix slaves_lock IRQ deadlock Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 101/547] net/sched: sch_teql: fix use-after-free on lower qdisc drop Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 102/547] net/sched: fix packet reordering on requeue Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 103/547] net/sched: act_ife: do not consume the inner header on egress Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 104/547] driver core: take parent lock on deferred probe Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 105/547] driver core: Limit the messages on a refused uevent Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 106/547] driver core: fix parent lock use-after-free on USB disconnect Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 107/547] driver core: take parent lock in async device attach Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 108/547] Drivers: hv: vmbus: Bounds check the shared ring buffer indices Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 109/547] backlight: lm3630a: Cancel delayed work before destroying workqueue Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 110/547] backlight: qcom-wled: Fix NULL pointer dereference in wled_remove() Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 111/547] backlight: qcom-wled: Fix unbalanced OVP IRQ enable at probe Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 112/547] backlight: qcom-wled: Fix WLED3 brightness register stride Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 113/547] ksmbd: accept share config responses from ksmbd-tools before 3.5.3 Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 114/547] ksmbd: avoid restoring only in-memory EOF after allocation change Greg Kroah-Hartman
2026-11-04 21:04 ` [PATCH 7.3 115/547] ksmbd: defer connection scavenging while session locks are busy Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 116/547] ksmbd: deny access for an empty DACL instead of granting the request Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 117/547] ksmbd: drain session procfs readers before dropping table references Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 118/547] ksmbd: fix extended session security negotiation for raw NTLMSSP Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 119/547] ksmbd: fix OOB read and cross-share confusion in ksmbd_validate_name_reconnect() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 120/547] ksmbd: fix overflow in dacloffset bounds check in build_sec_desc() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 121/547] ksmbd: fix parent dentry lifetime in directory enumeration Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 122/547] ksmbd: fix session reference leak on compounded SESSION_SETUP Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 123/547] ksmbd: hold a connection reference for each session channel Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 124/547] ksmbd: ignore network devices of other namespaces Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 125/547] ksmbd: limit sessions on each connection Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 126/547] ksmbd: preserve unreadable named streams on open Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 127/547] ksmbd: prevent session binding in compound requests Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 128/547] ksmbd: prevent share root removal through empty paths Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 129/547] ksmbd: prevent stale data from being written by SMB2 WRITE requests Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 130/547] ksmbd: reclaim ended sessions on logoff and expiration Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 131/547] ksmbd: reserve space for the UTF-16 terminator in stream info Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 132/547] ksmbd: restore Kerberos logins with released ksmbd-tools Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 133/547] ksmbd: return end of file for reads past a named streams data Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 134/547] ksmbd: use u8 for SMB2 oplock level values Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 135/547] ksmbd: validate AppInstanceId takeover target Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 136/547] ksmbd: validate security descriptor offsets before pointer arithmetic Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 137/547] ksmbd: verify transform SessionId matches the decrypted header Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 138/547] vlan: restore HW VLAN tag insertion with reorder_hdr off Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 139/547] cgroup: serialize migrations of newly forked processes Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 140/547] wifi: b43: fix use-after-free in b43_bcma_remove() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 141/547] SUNRPC: fix netns use-after-free in write_gssp() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 142/547] spmi: Fix potential use-after-free by grabbing of_node reference Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 143/547] smb: client: fix use-after-free infoleak via the readdir resume name Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 144/547] smb: client: fix use-after-free in cifs_ses_add_channel() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 145/547] sched_ext: Fix use-after-free of a local reenq node left on an inactive cpu Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 146/547] RDMA/uverbs: Fix DMABUF use-after-free during ufile cleanup Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 147/547] RDMA/irdma: avoid use-after-free in icrdma_remove Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 148/547] rapidio: mport_cdev: fix use-after-free in mport_mm_close() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 149/547] pps: generators: fix use-after-free when closing a removed device Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 150/547] PM: EM: Fix use-after-free of perf domain in netlink doit handlers Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 151/547] platform/x86: asus-wmi: fix use-after-free unregistering kbd_led led Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 152/547] platform/x86/amd: hfi: Fix a use-after-free when unloading the driver Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 153/547] nvmet: fix use-after-free of the old registrant in nvmet_pr_preempt() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 154/547] nvmet-fc: fix use-after-free in nvmet_fc_ls_create_connection() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 155/547] iommufd: Fix event queue release use-after-free Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 156/547] landlock: Fix superblock use-after-free in release_inode() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 157/547] lockd: Fix use-after-free in nlmsvc_retry_blocked Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 158/547] media: au0828: fix use-after-free in bulk_timeout timer on disconnect Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 159/547] media: cx23885: Fix use-after-free in cx23885_finidev due to race condition Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 160/547] media: hackrf: fix use-after-free in hackrf_alloc_urbs() error path Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 161/547] media: imon: fix use-after-free in display_close via dev_dbg Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 162/547] media: ipu-bridge: Fix use-after-free in IVSC error path Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 163/547] mm/hugetlb: fix use-after-free in hugetlb_mfill_atomic_pte() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 164/547] mm/hugetlb: fix use-after-free of a new anon folio Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 165/547] apparmor: fix a use-after-free in aa_lookupn_ns() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 166/547] ASoC: audio-graph-card2: Fix use-after-free in audio_graph2_link_c2c() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 167/547] ata: sata_fsl: Fix use-after-free of host_priv on probe() failure Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 168/547] drm/msm: Fix vm_bo use-after-free in with_vm_locks() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 169/547] s390/pci: Fix double-free and NULL deref in zpci MSI domain cleanup Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 170/547] s390/pci: Fix MSI directed-mode teardown IRQ bit count Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 171/547] s390/pci: Fix resource leak in zpci MSI setup Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 172/547] s390/pci: Fix use-after-free race in zpci floating interrupt cleanup Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 173/547] s390/pci: Add error cleanup in zpci_directed_irq_init() Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 174/547] s390/cpum_cf: Check session mask before cpu offline Greg Kroah-Hartman
2026-11-04 21:05 ` [PATCH 7.3 175/547] s390/extable: Fix mvcos instruction decoding Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 176/547] s390/kprobes: Prevent kprobes on instructions with exception table entry Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 177/547] s390/probes: Fix wrong opcode for cgrb fixup Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 178/547] s390/signal: Fix incorrect return address in signal frame Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 179/547] s390/vmcp: Initialize full session info to zero Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 180/547] s390/zcrypt: Fix and improve zcrypt reply message verification checks Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 181/547] s390/zcrypt: Fix out-of-bounds ptr advance in cca_query_crypto_facility() Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 182/547] s390/zcrypt: Guard domain index uses against speculative bypass Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 183/547] HID: wacom: Use hdev->product in wacom_setup_touch_input_capabilities Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 184/547] HID: wacom: Advertise SW_MUTE_DEVICE capability prior to registration Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 185/547] HID: wacom: Fix Use-After-Free in wacom_intuos_pad Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 186/547] HID: wacom: Fix Use-After-Free in wacom_bamboo_pad Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 187/547] HID: wacom: Redesign shared sibling data lifecycle Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 188/547] HID: wacom: Setup SW_MUTE_DEVICE according to the order of input registration Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 189/547] HID: wacom: Write shared touch initial status only once Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 190/547] klist: avoid accesses after waking klist_remove() Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 191/547] objtool/rust: add one more `noreturn` Rust function for Rust 1.101.0 Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 192/547] rust: bindings: fix `VM_MAYSHARE` blocklist entry Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 193/547] rust: bindings: fix VM_MAYSHARE value Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 194/547] rust: bitmap: restrict bitmap length to at most i32::MAX Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 195/547] rust: block: fix `Send` bound for `GenDisk` Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 196/547] rust: block: require `Sync` for `Operations::QueueData` Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 197/547] rust: bug: pass TAINT_WARN to warn_slowpath_fmt() on UML Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 198/547] rust: bug: update the SAFETY comment for " Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 199/547] rust: configfs: fix data offset calculation for subsystem callbacks Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 200/547] rust: cpufreq: reject NULL from cpufreq_cpu_get() Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 201/547] rust: fwctl: declare cfi_encoding for fwctl_rpc_scope Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 202/547] rust: module_param: Fix potentially incorrect access of `SetOnce<T>` Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 203/547] rust: rcpufreq_dt: add module alias Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 204/547] accel/amdxdna: clear the mailbox channel pointer when starting it fails Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 205/547] ALSA: control: Fix UAF in snd_ctl_elem_add() on card disconnect Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 206/547] ALSA: emux: Fix UAF of soundfont zones at note-on Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 207/547] ALSA: pcmtest: handle multiple wraps in random capture fill Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 208/547] ASoC: amd: ps: fix snd_acp63_remove() teardown ordering Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 209/547] Bluetooth: hci_vhci: Pin module for debugfs file operations Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 210/547] drm/panthor: Fix TOCTOU race between GROUP_REGISTERED check and erase Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 211/547] fbdev: atmel_lcdfb: Prevent FIFO work after removal Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 212/547] fbdev: udlfb: dont rebuild the mode list while the framebuffer is in use Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 213/547] filelock: keep superblock active through delegation wait Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 214/547] fs/proc/task_mmu: pin mm_users in do_pagemap_scan() Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 215/547] fsverity: Set S_VERITY only after rollback is no longer possible Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 216/547] genirq: Defer kfree(irqaction) until irq_thread_dtor() finishes Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 217/547] genirq: Move interrupt thread exit_work object to irqaction Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 218/547] HID: hiddev: keep state alive through disconnect unlock Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 219/547] io_uring/io-wq: save worker type before dropping its reference Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 220/547] iomap: dont resubmit an ioend after ->writeback_submit() failed Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 221/547] iommu/arm-smmu-v3: Disable the impl before disabling the SMMU on shutdown Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 222/547] KVM: guest_memfd: Gracefully handle xarray errors when binding a memslot Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 223/547] KVM: pfncache: use a dedicated invalidation sequence for cache refresh Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 224/547] KVM: PPC: Book3S HV: Add SRCU protection for virtual-mode HPT hcalls Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 225/547] media: cx23885: unregister DVB bus when SP2 CI setup fails Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 226/547] media: gspca: use vb2_video_unregister_device() on disconnect Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 227/547] media: imx-jpeg: cancel timeout worker when streaming stops Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 228/547] media: marvell: mcam: stop DMA and cancel s_bh_work before freeing DMA buffers Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 229/547] media: microchip-csi2dc: fix async notifier leak on probe error path Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 230/547] media: microchip-isc: take a reference on the parsed endpoints Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 231/547] media: redrat3: fix UAF in probe error path leaving rc device registered Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 232/547] media: s5p-mfc: use timer_shutdown_sync() for the self-rearming watchdog Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 233/547] mm/rmap: dont discard lazyfree THPs at PMD level Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 234/547] mm/slab: sample slab_state once in kmem_cache_destroy() Greg Kroah-Hartman
2026-11-04 21:06 ` [PATCH 7.3 235/547] mm/truncate: look up the end-edge straddler by index Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 236/547] mm: khugepaged: fix folio is used after folio_put/unlock() Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 237/547] mm: khugepaged: fix folio is used after pte_unmap_unlock() Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 238/547] mm: khugepaged: fix swap entry value to folio_pfn() Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 239/547] mptcp: hold MP_JOIN msk ref when cloning reqsk Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 240/547] mshv_vtl: detach poll waiter on POLLFREE Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 241/547] mtd: virt-concat: unlink concat node before freeing it Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 242/547] mtd: virt-concat: unlink discarded items before freeing Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 243/547] net: sched: prevent scheduling deactivated qdiscs Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 244/547] scsi: dc395x: sync the waiting_timer before freeing the host Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 245/547] serial: core: shut down initialized port on removal Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 246/547] staging: rtl8723bs: fix protected RX frame validation in decrypt path Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 247/547] xen-blkfront: unbind irq before tearing down ring and shadow requests Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 248/547] wifi: ath9k: delete channel-context timers on deinit Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 249/547] wifi: mt76: mt7996: unlink TWT flow if the MCU rejects the agreement Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 250/547] virtio_net: atomically disable rx mode work Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 251/547] vfio/nvgrace-gpu: Use a core-only open_device in fallback mode Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 252/547] usb: gadget: fix refcount underflow in gadgetfs_bind() error path Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 253/547] ufs: use u64 for directory size in ufs_last_byte Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 254/547] spi: spi-pci1xxxx: quiesce DMA engines on transfer timeout Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 255/547] resource: report a devm_request_resource() conflict under the lock Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 256/547] phy: core: Fix race-condition between _of_phy_get() and try_module_get() Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 257/547] power: supply: pf1550: drain IRQ work before unregistering supplies Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 258/547] power: supply: sbs-battery: disable polling before supply teardown Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 259/547] pps: generators: dont use the drivers info after unregister Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 260/547] nvmem: core: Fix OOB read for bit offsets of more than one byte Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 261/547] nvmet-auth: serialize access to DH-HMAC-CHAP state to fix UAF Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 262/547] media: rc: Ensure that rc_unregister_device() does not free input device Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 263/547] media: rc: Ensure registered is cleared in error path Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 264/547] media: rc: fintek-cir: process a full RX buffer instead of overflowing it Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 265/547] media: rc: Fix race between bpf(BPG_PROG_ATTACH) and device unregister Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 266/547] media: rc: Fix race condition during rc_register_device() Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 267/547] media: rc: mce_kbd: Fix inconsistent locking of keylock Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 268/547] media: rc: Use after free in ir_raw_event_handle() Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 269/547] media: rc: After rc_unregister_device() timers can be re-armed Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 270/547] media: rc: Fix use after free in bpf progs Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 271/547] media: rc: Fix ABBA deadlock by making locks more fine grained Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 272/547] ocfs2/heartbeat: unlink live slots when their node is missing Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 273/547] ocfs2/dlm: hold a lock reference across grant AST enqueue Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 274/547] ocfs2/dlm: hold the lookup reference across convert " Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 275/547] ocfs2: cancel quota sync work before freeing quota info Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 276/547] ocfs2: fix chunk number of the first chunk in a local quota file Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 277/547] ocfs2: pin refcount trees before dropping the lookup lock Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 278/547] ocfs2: snapshot dentry names in file and setattr traces Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 279/547] smb: client: fix OOB last_entry pointer from unbounded LastNameOffset Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 280/547] smb: client: hold server info until cifsd exits Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 281/547] smb: client: stop processing a read response after a receive error Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 282/547] ovl: hold a reference on the parent in readdir Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 283/547] ovl: set OVL_WHITEOUTS before publishing the upper dir Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 284/547] ovl: take a snapshot of the name for copy up Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 285/547] ovl: use the pinned upper dir in ovl_fix_origin() Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 286/547] ovl: always encode the origin fh when index is enabled Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 287/547] ovl: check that the parents of volatile/dirty are dirs Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 288/547] ovl: check the casefold flag of directories only Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 289/547] ovl: do not copy up a dentry that was removed Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 290/547] ovl: do not copy up an xattr value that was never read Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 291/547] ovl: fix a torn path in ovl_get_redirect() Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 292/547] ovl: fix mount setup failing when override_creds drops CAP_SYS_ADMIN Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 293/547] ovl: fortify ovl_copy_xattr() against underlying layer modifications Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 294/547] ovl: read the nlink xattr of every indexed non-dir Greg Kroah-Hartman
2026-11-04 21:07 ` [PATCH 7.3 295/547] ovl: reserve space for the casefolded name terminator Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 296/547] ovl: set the revalidate flags after d_instantiate() Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 297/547] ovl: skip copy up of empty security.capability Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 298/547] xfs: clear the symlink zapped flag if inline symlink is ok Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 299/547] xfs: mark cow extents bad if theres no rmap mapping for them Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 300/547] xfs: compute the correct fdblocks/frextents for repair when theyre negative Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 301/547] xfs: fix ondisk symlink target validation in xrep_dinode_check_dfork Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 302/547] xfs: fix xfs_rename_space_res for non-pptr filesystems Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 303/547] xfs: fix missing xfs_qm_adjust_dqlimits call in quotacheck repair Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 304/547] xfs: fix buffer overruns in xfs_ioc_attr_list Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 305/547] xfs: online quotacheck must dirty dquot if enforcement adjustments needed Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 306/547] xfs: avoid cross-rtgroup reaping after a repair Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 307/547] xfs: actually lock the metafile reservation when adjusting after repair Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 308/547] xfs: fix unnecessary dapos truncation in xchk_dir_walk Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 309/547] xfs: fix buffer overflow in corrupt inline attr structure Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 310/547] xfs: actually report corrupt xattrs as XFAIL during cross-referencing Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 311/547] xfs: fix inode btree repair when a cluster is larger than a chunk Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 312/547] xfs: always reset incore attr fork buffer when resetting fork Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 313/547] xfs: dont pass iget failures up when marking ondisk inodes Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 314/547] xfs: zero out di_metatype when removing the metadir file iflag Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 315/547] xfs: flag excessive delalloc rt extents as corruption Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 316/547] xfs: dont fix the directory tree if live update fails Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 317/547] xfs: validate rc_domain in xchk_rtrefcount_mergeable Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 318/547] xfs: dont proceed with xattr repair if the live update fails Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 319/547] xfs: fix skipped inode mask handling in iscan Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 320/547] xfs: dont repair fs summary counters with garbage Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 321/547] xfs: fix lost errno returned from xfarray_foliosort Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 322/547] xfs: allow softlimit with no hardlimit in quota scrub Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 323/547] xfs: assign an owner to scrub_stats_fops Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 324/547] xfs: bail out of directory tree repairs on error Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 325/547] xfs: fix revalidation of xchk_dquot_iter cached mappings Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 326/547] xfs: abort dirtree repair if the live update hook dies Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 327/547] xfs: check fork type against dabtree block magic number Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 328/547] xfs: mark overfull dabtree node blocks as corrupt Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 329/547] xfs: jump out of xchk_bmap_check_rmap if fatal signals Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 330/547] xfs: cross-reference the primary superblock Greg Kroah-Hartman
2026-11-05 15:38 ` Barry K. Nathan
2026-11-04 21:08 ` [PATCH 7.3 331/547] xfs: adjust checks for cross-AG reaping issues Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 332/547] xfs: actually check XFS_DIFLAG2_METADATA for metadata btree data forks Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 333/547] xfs: fix xchk_stats_estimate_bufsize to allow for the trailing null Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 334/547] netfilter: nft_payload: restrict checksum offsets to known values Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 335/547] rtnetlink: wait for RCU readers in rtnl_link_unregister() Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 336/547] xfs: reduce new btree slack factor if free space is negative Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 337/547] xfs: reject absurdly large xattr value lengths in xchk_xattr_actor Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 338/547] xfs: reject out-of-range attribute value lengths in xfs_attr_copy_value Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 339/547] xfs: reject remote xattr entries with an out-of-range value length Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 340/547] xfs: release ip after unlinked list store failure Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 341/547] xfs: rescan the AGs if incore delalloc counter is negative Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 342/547] xfs: update quota flags on secondary supers when metadir enabled Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 343/547] xfs: abort directory tree repair whenever dl->aborted is set Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 344/547] xfs: always forget cached ACLs if the attr fork swap succeeds Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 345/547] xfs: always report inode repair setup failures Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 346/547] xfs: always report scrub errors in tracepoints Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 347/547] xfs: always zero the whole shortform header when zeroing attr fork Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 348/547] xfs: bound da-node entry count against the correct geometry Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 349/547] xfs: bound inode fork length against the fork size during log recovery Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 350/547] xfs: check for fragments when full-extent sharing matches Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 351/547] xfs: check for termination during rmap btree walk Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 352/547] xfs: clarify various parts of the bitmap API Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 353/547] xfs: clear set[ug]id mode bits when zapping attr fork Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 354/547] xfs: complain loudly when dirtree checker finds broken links Greg Kroah-Hartman
2026-11-04 21:08 ` [PATCH 7.3 355/547] xfs: dont allow sm_agno for non-group metadir path checking Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 356/547] xfs: dont clear COWEXTSIZE on directories on reflink filesystems Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 357/547] xfs: dont overrun incore inode when cleaning attr forks Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 358/547] xfs: dont queue rmap update twice when reaping a fork Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 359/547] xfs: dont rescan ifree and icount when frozen Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 360/547] xfs: dont scan across metadata/regular directory trees for dirents Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 361/547] xfs: dont set a metadata directorys parent to sb_rootino Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 362/547] xfs: dont subtract excess usage twice when computing agf_btreeblks Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 363/547] xfs: dont try to repair rtsummary if the summary file isnt computed Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 364/547] xfs: dont try to scrub self-referential dirent in metapath checker Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 365/547] xfs: fix correction of unwritten extents in quota file data fork Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 366/547] xfs: fix data fork block count check in xrep_inode_blockcounts Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 367/547] xfs: init inode number for tracepoint Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 368/547] xfs: never reset the default quota timer Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 369/547] xfs: only written file data blocks can be shared Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 370/547] xfs: opportunistically skip btree block checks Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 371/547] xfs: propagate errors while checking null siblings Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 372/547] xfs: range-check bc_levels array access in scrub tracepoints Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 373/547] xfs: reattach dquots after changing inode ids Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 374/547] x86/bugs: Adapt SRSO mitigation to Zen6 Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 375/547] smb: server: size directory name conversion buffer correctly Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 376/547] smb: smbdirect: fix buffer length underflow in RDMA transfers Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 377/547] smb: client: bound POSIX lock data area by response length Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 378/547] smb: client: dont resurrect an exiting tcon from cached dir workers Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 379/547] smb: client: fix buffer overflow in SMB2_tcon() Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 380/547] smb: client: fix fiemap wild read on empty truncated response Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 381/547] smb: client: fix OOB read of the resume name sent in TRANS2_FIND_NEXT2 Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 382/547] smb: client: fix OOB read in the SMB_FIND_FILE_UNIX name scan Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 383/547] smb: client: fix slab-out-of-bounds write in id_mode_to_cifs_acl() Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 384/547] smb: client: reclaim credits for decrypted reads with no matching mid Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 385/547] smb: client: reject FIND data areas that run past the received response Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 386/547] smb: client: reject short or out-of-range FIND response parameters Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 387/547] smb: client: reject short SESSION_SETUP responses Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 388/547] smb: client: require stable pages for SMB compression Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 389/547] smb: client: validate NT transaction response layout and offsets Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 390/547] smb: client: validate SMB1 EA list bounds before parsing Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 391/547] smb: client: validate the data area in SMB2_read() Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 392/547] xfs: map pNFS layouts to the end of the extent again Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 393/547] kernfs: dont lose IN_DELETE_SELF when decoding a file handle Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 394/547] pNFS: Fix CB_NOTIFY_DEVICEID CHANGE to consume ndc_immediate Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 395/547] pnfs/blocklayout: Complete a device upcall only on its own reply Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 396/547] pnfs/blocklayout: Complete a device upcall when the pipe is closed Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 397/547] NFSv4/pnfs: bound the CB_NOTIFY_DEVICEID array count before allocating Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 398/547] NFSv4/pnfs: Free the netid when draining a data-server address list Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 399/547] NFSv4: Fix a regression in the handling of CB_RECALL_ANY Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 400/547] NFSv4.1/pnfs: suspend pNFS on NFS4ERR_TOOSMALL from LAYOUTGET Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 401/547] NFSv4/filelayout: Anchor page coalescing on pattern_offset Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 402/547] NFSv4/flexfiles: fail I/O to the data server once a lock is lost Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 403/547] NFSv4/flexfiles: Use the full 64-bit offset for read DS selection Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 404/547] NFSv4/flexfiles: Use the full 64-bit stripe_unit Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 405/547] NFSv4/flexfiles: Bound page coalescing on the absolute stripe offset Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 406/547] NFS: Fix stale negative cache on failed nfs_mkdir() Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 407/547] NFS/localio: detect a short read or write before the iterator has moved Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 408/547] NFS/localio: fix nfs_local_dio_misaligned tracepoint Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 409/547] NFS/localio: report the stability a DIO WRITE actually has Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 410/547] NFSD: cap the number of listeners accepted in listener_set Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 411/547] nfsd: clear XDR padding in GETXATTR replies Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 412/547] NFSD: copy SETXATTR data from all XDR buffer segments Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 413/547] NFSD: Destroy a recalled delegation the client does not hold Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 414/547] NFSD: Do not send CB_RECALL_ANY to NFSv4.0 clients Greg Kroah-Hartman
2026-11-04 21:09 ` [PATCH 7.3 415/547] NFSD: Dont complete a cld upcall the daemon has not read Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 416/547] nfsd: dont modify a session slot when replaying its cached reply Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 417/547] nfsd: dont offer flexfiles layouts when NFSv3 isnt being served Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 418/547] NFSD: Fail a pool_threads read whose reply does not fit Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 419/547] nfsd: fetch direct I/O alignment for files handed to the filecache Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 420/547] nfsd: Fix id-to-name cache entry leak in idtoname_parse() Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 421/547] NFSD: Fix out-of-bounds read in the rpc_status dump Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 422/547] nfsd: hold cl_lock in client_has_openowners() Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 423/547] nfsd: honour client-provided attributes for NFS4_CREATE_EXCLUSIVE4_1 Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 424/547] NFSD: map fh_verify() status codes for NFS_ACLv3 replies Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 425/547] NFSD: Map flex file layout IDs through the requests user namespace Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 426/547] nfsd: preflight SEQUENCE replies before accepting a slot Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 427/547] nfsd: propagate SETXATTR value decode errors Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 428/547] NFSD: Reject an oversized principal hash from nfsdcld Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 429/547] NFSD: Resolve the recall-any mask names in the trace format Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 430/547] NFSD: Return NFSERR_ISDIR for NFSv2 READ and WRITE on a non-regular file Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 431/547] NFSD: Set nn->cld_net before registering the cld pipe Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 432/547] NFSD: validate transport name in listener_set before serv creation Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 433/547] nfsd: zero NFSv4 COMPOUND tag padding Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 434/547] SUNRPC: Copy the deferred RPC Call from the head buffer Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 435/547] SUNRPC: Do not credit control-record octets to the RPC stream Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 436/547] SUNRPC: fix oversized GSS proxy token copy Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 437/547] sunrpc: honor the netlink unix_gid NEGATIVE flag Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 438/547] SUNRPC: keep the first error in svc_register() Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 439/547] sunrpc: pin gss module across auth_domain RCU free Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 440/547] SUNRPC: Reject a socket that already has an svc_sock attached Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 441/547] SUNRPC: Reject a TLS alert record that is not two octets Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 442/547] SUNRPC: Resume receiving after a TLS control record Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 443/547] SUNRPC: trace an accepted transport before publishing it Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 444/547] sunrpc: treat empty auth.unix.gid replies as negative entries Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 445/547] SUNRPC: Treat every TLS error alert as fatal Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 446/547] rxrpc: Fix update of call->tx_pending without holding lock Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 447/547] rxrpc: Fix lack of short-send handling in rxrpc_kernel_send_data() Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 448/547] afs: Fix afs to abort the rxrpc call on send error Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 449/547] rxrpc: Fix double IRQ enablement Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 450/547] rxrpc: Fix return in rxrpc_recvmsg_data() for service calls Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 451/547] x86/cpuid: Mark CPUID function 0x23 as being indexed Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 452/547] x86/mm/pat: Fix effective RW computation in lookup_address_in_pgd_attr() Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 453/547] ALSA: x86: hdmi: fix chmap array missing terminator entry Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 454/547] KVM: Only bind memslot to guest_memfd instance for CREATE operations Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 455/547] KVM: SVM: Trigger new ASID allocation in both VMCBs on pCPU switch Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 456/547] KVM: nSVM: Reject KVM_SET_NESTED_STATE if L1 has EFER.LMA=1 && EFER.LME=0 Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 457/547] KVM: nSVM: Ignore EFER.LMA if EFER.LME=0 when preparing L2 state Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 458/547] KVM: Use goto to handle errors during memslot preparation Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 459/547] KVM: VMX: Disallow using to_vmx() in common VT code Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 460/547] KVM: VMX: Formally define KVMs "0xdead" exit reason used for failed VM-Enter Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 461/547] KVM: VMX: Make handle_bus_lock_vmexit() a shared helper Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 462/547] KVM: VMX: Preserve negative return value in vmx_handle_exit() with bus lock detected Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 463/547] KVM: x86/mmu: Bug the VM if KVM attempts to walk more levels than the MMU has Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 464/547] KVM: x86/mmu: Bug the VM if KVM calcs a CPU role with EFER.LMA=1 && CR4.PAE=0 Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 465/547] KVM: x86/xen: Enforce 4-byte alignment of vcpu_info registration Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 466/547] KVM: x86/xen: Take kvm->srcu in __kvm_xen_has_interrupt() Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 467/547] KVM: x86: Clear hardware HLT state when userspace makes a vCPU not-halted Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 468/547] KVM: x86: Preserve DR6.BLD (Bus Lock Detect) when delivering #DB payload Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 469/547] KVM: x86: Request event processing for exception VM-Exits Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 470/547] KVM: x86: Take SRCU in kvm_zap_gfn_range() Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 471/547] KVM: x86: Zero reserved synic flags when delivering message to avoid stack leak Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 472/547] KVM: TDX: Check if there is valid exit infos based on vp_enter_ret Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 473/547] KVM: TDX: Enable Notify VM exit Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 474/547] KVM: TDX: Set bits 31:16 to 0 and use UNDEFINED when synthesizing exit reason Greg Kroah-Hartman
2026-11-04 21:10 ` [PATCH 7.3 475/547] KVM: TDX: Stuff exit_reason with UNDEFINED on wait_for_sept_zap return Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 476/547] KVM: TDX: Dont assume exit_reason[31:16] is all-0 in tdx_to_vmx_exit_reason() Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 477/547] KVM: TDX: Enable Bus Lock VM exit Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 478/547] KVM: guest_memfd: Split bind() into prepare()+commit() phases Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 479/547] KVM: guest_memfd: take the invalidate lock when unbinding a dying file Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 480/547] KVM: guest_memfd: Establish memslot<=>guest_memfd bindings *after* memslot is ready Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 481/547] KVM: PPC: Book3S HV: Add preempt_disable() around virtual-mode HPTE bit-lock users Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 482/547] KVM: PPC: Fix get_d_signext() 12-bit displacement for paired-single D-form Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 483/547] HID: usbhid: skip interrupt IN polling for devices with no input reports Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 484/547] HID: zydacron: validate key report length Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 485/547] HID: amd_sfh: Remove unsupported motion-state field from accelerometer report Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 486/547] HID: amd_sfh: Use report type from request node Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 487/547] HID: asus: do not send keyboard init reports to touchpads Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 488/547] HID: core: Fix out-of-bounds left shift by 32 in s32ton() Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 489/547] HID: cougar: reject short special-key reports Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 490/547] HID: cp2112: validate response report lengths Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 491/547] HID: elo: reject short touchscreen reports Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 492/547] HID: logitech-dj: validate unnumbered keyboard reports Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 493/547] HID: mcp2200: validate READ_ALL response length Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 494/547] HID: mcp2221: always initialize and cancel init_work Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 495/547] HID: mcp2221: validate response report length Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 496/547] HID: picoLCD: check for fb_deferred_io_init() error Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 497/547] HID: prodikeys: validate fixed-format MIDI reports Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 498/547] HID: pxrc: reject short input reports Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 499/547] HID: quirks: Always poll the Anne Pro 2 with product ID a292 Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 500/547] HID: roccat: isku: reject short button reports Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 501/547] HID: roccat: koneplus: " Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 502/547] HID: roccat: konepure: " Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 503/547] HID: roccat: kovaplus: " Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 504/547] HID: roccat: pyra: " Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 505/547] HID: roccat: ryos: reject short special reports Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 506/547] HID: roccat: savu: " Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 507/547] HID: hid-lenovo-go-s: Prevent deadlock if device removed during setup Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 508/547] HID: hid-lenovo-go-s: Return ret instead of 0 in mcu_property_out() Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 509/547] HID: hid-lenovo-go-s: Use pm_ptr for reset_resume callback Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 510/547] HID: hid-lenovo-go-s: Add suspend function and gate access under bool Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 511/547] HID: hid-lenovo-go-s: Bound stale reply window before reusing send_cmd_complete Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 512/547] HID: hid-lenovo-go-s: Move attribute init to after device query Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 513/547] HID: hid-lenovo-go-s: Reorganize and rename hid_gos_cfg Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 514/547] HID: hid-lenovo-go-s: Add kobject_uevent notify during reset-resume Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 515/547] HID: hid-lenovo-go-s: Move static led_classdev_mc to drvdata struct Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 516/547] HID: hid-lenovo-go-s: Use devm_kzalloc for drvdata Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 517/547] accel/amdxdna: Add support for AIE2 revision 9 Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 518/547] io_uring/kbuf: advance head when a pickup empties the buffer ring Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 519/547] io_uring/net: keep recvmsg buffer select length within MAX_RW_COUNT Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 520/547] io_uring/net: mask socket type with SOCK_TYPE_MASK in io_socket_bpf_populate() Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 521/547] io_uring/register: enforce per-task restrictions in io_uring_register_blind() Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 522/547] io_uring/net: dont retry a non-blocking connect() that fails with -EAGAIN Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 523/547] io_uring: keep the drain active when a deferred drain request is started Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 524/547] io_uring/io-wq: no new workers once the exit has begun Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 525/547] io_uring/rsrc: charge buffer arrays and nodes to memcg Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 526/547] io_uring: charge tctx nodes and personalities Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 527/547] io_uring: free XArray nodes left by a failed store Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 528/547] io_uring/bpf-ops: clear bpf_ctx while submitting SQEs Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 529/547] io_uring: free the task context after a grace period Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 530/547] io_uring/sqpoll: dont wait for the thread to exit Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 531/547] io_uring: defer foreign io-wq enqueues to task_work Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 532/547] io_uring/timeout: count cancelled timeouts in cq_timeouts Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 533/547] io_uring/net: fix multishot recv length limit accounting Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 534/547] ksmbd: fix SMB2 CREATE response buffer overflow Greg Kroah-Hartman
2026-11-04 21:11 ` [PATCH 7.3 535/547] ksmbd: fix out-of-bounds read when padding the final compound response Greg Kroah-Hartman
2026-11-04 21:12 ` [PATCH 7.3 536/547] ksmbd: use clear_and_wake_up_bit() directly Greg Kroah-Hartman
2026-11-04 21:12 ` [PATCH 7.3 537/547] ksmbd: track delivery of queued TCP writes Greg Kroah-Hartman
2026-11-04 21:12 ` Greg Kroah-Hartman [this message]
2026-11-04 21:12 ` [PATCH 7.3 539/547] ksmbd: fix app-instance non-durable supersede session UAF Greg Kroah-Hartman
2026-11-04 21:12 ` [PATCH 7.3 540/547] ksmbd: fix invalid pointer dereference when get_inode_acl() fails Greg Kroah-Hartman
2026-11-04 21:12 ` [PATCH 7.3 541/547] ksmbd: use the existing xattr name for a named stream Greg Kroah-Hartman
2026-11-04 21:12 ` [PATCH 7.3 542/547] ksmbd: fix named stream write and EOF handling Greg Kroah-Hartman
2026-11-04 21:12 ` [PATCH 7.3 543/547] ksmbd: rebind completed CREATE replays without draining the old channel Greg Kroah-Hartman
2026-11-04 21:12 ` [PATCH 7.3 544/547] ksmbd: fix use-after-free after a failed durable reconnect Greg Kroah-Hartman
2026-11-04 21:12 ` [PATCH 7.3 545/547] rust_binder: wake epoll on self-work queued to poll thread Greg Kroah-Hartman
2026-11-04 21:12 ` [PATCH 7.3 546/547] media: rc: Fix build failure with CONFIG_LIRC disabled Greg Kroah-Hartman
2026-11-04 21:12 ` [PATCH 7.3 547/547] ksmbd: keep retry timeout clamp bounds constant Greg Kroah-Hartman
2026-11-05 0:27 ` [PATCH 7.3 000/547] 7.3.2-rc1 review Ronald Warsow
2026-11-05 18:39 ` Sasha Levin
2026-11-05 19:58 ` Ronald Warsow
2026-11-05 3:08 ` SJ Park
2026-11-05 8:10 ` Peter Schneider
2026-11-05 12:17 ` Takeshi Ogasawara
2026-11-05 14:16 ` Ron Economos
2026-11-05 15:30 ` Pavel Machek
2026-11-05 16:16 ` Brett A C Sheffield
2026-11-05 21:56 ` Florian Fainelli
2026-11-05 23:15 ` Shuah Khan
2026-11-06 0:31 ` Miguel Ojeda
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=20261104211053.689152589@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=linkinjeon@kernel.org \
--cc=pan.guihua@datatom.com \
--cc=patches@lists.linux.dev \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.