All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Jason Wang <jasowang@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jakub Kicinski <kuba@kernel.org>
Subject: [PATCH 6.17 073/146] vhost: rewind next_avail_head while discarding descriptors
Date: Wed,  3 Dec 2025 16:27:31 +0100	[thread overview]
Message-ID: <20251203152349.138986657@linuxfoundation.org> (raw)
In-Reply-To: <20251203152346.456176474@linuxfoundation.org>

6.17-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Jason Wang <jasowang@redhat.com>

commit 779bcdd4b9ae6566f309043c53c946e8ac0015fd upstream.

When discarding descriptors with IN_ORDER, we should rewind
next_avail_head otherwise it would run out of sync with
last_avail_idx. This would cause driver to report
"id X is not a head".

Fixing this by returning the number of descriptors that is used for
each buffer via vhost_get_vq_desc_n() so caller can use the value
while discarding descriptors.

Fixes: 67a873df0c41 ("vhost: basic in order support")
Cc: stable@vger.kernel.org
Signed-off-by: Jason Wang <jasowang@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Link: https://patch.msgid.link/20251120022950.10117-1-jasowang@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/vhost/net.c   | 53 ++++++++++++++++++------------
 drivers/vhost/vhost.c | 76 +++++++++++++++++++++++++++++++++++--------
 drivers/vhost/vhost.h | 10 +++++-
 3 files changed, 103 insertions(+), 36 deletions(-)

diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c
index 35ded4330431..8f7f50acb6d6 100644
--- a/drivers/vhost/net.c
+++ b/drivers/vhost/net.c
@@ -592,14 +592,15 @@ static void vhost_net_busy_poll(struct vhost_net *net,
 static int vhost_net_tx_get_vq_desc(struct vhost_net *net,
 				    struct vhost_net_virtqueue *tnvq,
 				    unsigned int *out_num, unsigned int *in_num,
-				    struct msghdr *msghdr, bool *busyloop_intr)
+				    struct msghdr *msghdr, bool *busyloop_intr,
+				    unsigned int *ndesc)
 {
 	struct vhost_net_virtqueue *rnvq = &net->vqs[VHOST_NET_VQ_RX];
 	struct vhost_virtqueue *rvq = &rnvq->vq;
 	struct vhost_virtqueue *tvq = &tnvq->vq;
 
-	int r = vhost_get_vq_desc(tvq, tvq->iov, ARRAY_SIZE(tvq->iov),
-				  out_num, in_num, NULL, NULL);
+	int r = vhost_get_vq_desc_n(tvq, tvq->iov, ARRAY_SIZE(tvq->iov),
+				    out_num, in_num, NULL, NULL, ndesc);
 
 	if (r == tvq->num && tvq->busyloop_timeout) {
 		/* Flush batched packets first */
@@ -610,8 +611,8 @@ static int vhost_net_tx_get_vq_desc(struct vhost_net *net,
 
 		vhost_net_busy_poll(net, rvq, tvq, busyloop_intr, false);
 
-		r = vhost_get_vq_desc(tvq, tvq->iov, ARRAY_SIZE(tvq->iov),
-				      out_num, in_num, NULL, NULL);
+		r = vhost_get_vq_desc_n(tvq, tvq->iov, ARRAY_SIZE(tvq->iov),
+					out_num, in_num, NULL, NULL, ndesc);
 	}
 
 	return r;
@@ -642,12 +643,14 @@ static int get_tx_bufs(struct vhost_net *net,
 		       struct vhost_net_virtqueue *nvq,
 		       struct msghdr *msg,
 		       unsigned int *out, unsigned int *in,
-		       size_t *len, bool *busyloop_intr)
+		       size_t *len, bool *busyloop_intr,
+		       unsigned int *ndesc)
 {
 	struct vhost_virtqueue *vq = &nvq->vq;
 	int ret;
 
-	ret = vhost_net_tx_get_vq_desc(net, nvq, out, in, msg, busyloop_intr);
+	ret = vhost_net_tx_get_vq_desc(net, nvq, out, in, msg,
+				       busyloop_intr, ndesc);
 
 	if (ret < 0 || ret == vq->num)
 		return ret;
@@ -766,6 +769,7 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock)
 	int sent_pkts = 0;
 	bool sock_can_batch = (sock->sk->sk_sndbuf == INT_MAX);
 	bool in_order = vhost_has_feature(vq, VIRTIO_F_IN_ORDER);
+	unsigned int ndesc = 0;
 
 	do {
 		bool busyloop_intr = false;
@@ -774,7 +778,7 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock)
 			vhost_tx_batch(net, nvq, sock, &msg);
 
 		head = get_tx_bufs(net, nvq, &msg, &out, &in, &len,
-				   &busyloop_intr);
+				   &busyloop_intr, &ndesc);
 		/* On error, stop handling until the next kick. */
 		if (unlikely(head < 0))
 			break;
@@ -806,7 +810,7 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock)
 				goto done;
 			} else if (unlikely(err != -ENOSPC)) {
 				vhost_tx_batch(net, nvq, sock, &msg);
-				vhost_discard_vq_desc(vq, 1);
+				vhost_discard_vq_desc(vq, 1, ndesc);
 				vhost_net_enable_vq(net, vq);
 				break;
 			}
@@ -829,7 +833,7 @@ static void handle_tx_copy(struct vhost_net *net, struct socket *sock)
 		err = sock->ops->sendmsg(sock, &msg, len);
 		if (unlikely(err < 0)) {
 			if (err == -EAGAIN || err == -ENOMEM || err == -ENOBUFS) {
-				vhost_discard_vq_desc(vq, 1);
+				vhost_discard_vq_desc(vq, 1, ndesc);
 				vhost_net_enable_vq(net, vq);
 				break;
 			}
@@ -868,6 +872,7 @@ static void handle_tx_zerocopy(struct vhost_net *net, struct socket *sock)
 	int err;
 	struct vhost_net_ubuf_ref *ubufs;
 	struct ubuf_info_msgzc *ubuf;
+	unsigned int ndesc = 0;
 	bool zcopy_used;
 	int sent_pkts = 0;
 
@@ -879,7 +884,7 @@ static void handle_tx_zerocopy(struct vhost_net *net, struct socket *sock)
 
 		busyloop_intr = false;
 		head = get_tx_bufs(net, nvq, &msg, &out, &in, &len,
-				   &busyloop_intr);
+				   &busyloop_intr, &ndesc);
 		/* On error, stop handling until the next kick. */
 		if (unlikely(head < 0))
 			break;
@@ -941,7 +946,7 @@ static void handle_tx_zerocopy(struct vhost_net *net, struct socket *sock)
 					vq->heads[ubuf->desc].len = VHOST_DMA_DONE_LEN;
 			}
 			if (retry) {
-				vhost_discard_vq_desc(vq, 1);
+				vhost_discard_vq_desc(vq, 1, ndesc);
 				vhost_net_enable_vq(net, vq);
 				break;
 			}
@@ -1045,11 +1050,12 @@ static int get_rx_bufs(struct vhost_net_virtqueue *nvq,
 		       unsigned *iovcount,
 		       struct vhost_log *log,
 		       unsigned *log_num,
-		       unsigned int quota)
+		       unsigned int quota,
+		       unsigned int *ndesc)
 {
 	struct vhost_virtqueue *vq = &nvq->vq;
 	bool in_order = vhost_has_feature(vq, VIRTIO_F_IN_ORDER);
-	unsigned int out, in;
+	unsigned int out, in, desc_num, n = 0;
 	int seg = 0;
 	int headcount = 0;
 	unsigned d;
@@ -1064,9 +1070,9 @@ static int get_rx_bufs(struct vhost_net_virtqueue *nvq,
 			r = -ENOBUFS;
 			goto err;
 		}
-		r = vhost_get_vq_desc(vq, vq->iov + seg,
-				      ARRAY_SIZE(vq->iov) - seg, &out,
-				      &in, log, log_num);
+		r = vhost_get_vq_desc_n(vq, vq->iov + seg,
+					ARRAY_SIZE(vq->iov) - seg, &out,
+					&in, log, log_num, &desc_num);
 		if (unlikely(r < 0))
 			goto err;
 
@@ -1093,6 +1099,7 @@ static int get_rx_bufs(struct vhost_net_virtqueue *nvq,
 		++headcount;
 		datalen -= len;
 		seg += in;
+		n += desc_num;
 	}
 
 	*iovcount = seg;
@@ -1113,9 +1120,11 @@ static int get_rx_bufs(struct vhost_net_virtqueue *nvq,
 		nheads[0] = headcount;
 	}
 
+	*ndesc = n;
+
 	return headcount;
 err:
-	vhost_discard_vq_desc(vq, headcount);
+	vhost_discard_vq_desc(vq, headcount, n);
 	return r;
 }
 
@@ -1151,6 +1160,7 @@ static void handle_rx(struct vhost_net *net)
 	struct iov_iter fixup;
 	__virtio16 num_buffers;
 	int recv_pkts = 0;
+	unsigned int ndesc;
 
 	mutex_lock_nested(&vq->mutex, VHOST_NET_VQ_RX);
 	sock = vhost_vq_get_backend(vq);
@@ -1182,7 +1192,8 @@ static void handle_rx(struct vhost_net *net)
 		headcount = get_rx_bufs(nvq, vq->heads + count,
 					vq->nheads + count,
 					vhost_len, &in, vq_log, &log,
-					likely(mergeable) ? UIO_MAXIOV : 1);
+					likely(mergeable) ? UIO_MAXIOV : 1,
+					&ndesc);
 		/* On error, stop handling until the next kick. */
 		if (unlikely(headcount < 0))
 			goto out;
@@ -1228,7 +1239,7 @@ static void handle_rx(struct vhost_net *net)
 		if (unlikely(err != sock_len)) {
 			pr_debug("Discarded rx packet: "
 				 " len %d, expected %zd\n", err, sock_len);
-			vhost_discard_vq_desc(vq, headcount);
+			vhost_discard_vq_desc(vq, headcount, ndesc);
 			continue;
 		}
 		/* Supply virtio_net_hdr if VHOST_NET_F_VIRTIO_NET_HDR */
@@ -1252,7 +1263,7 @@ static void handle_rx(struct vhost_net *net)
 		    copy_to_iter(&num_buffers, sizeof num_buffers,
 				 &fixup) != sizeof num_buffers) {
 			vq_err(vq, "Failed num_buffers write");
-			vhost_discard_vq_desc(vq, headcount);
+			vhost_discard_vq_desc(vq, headcount, ndesc);
 			goto out;
 		}
 		nvq->done_idx += headcount;
diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index 8570fdf2e14a..a78226b37739 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -2792,18 +2792,34 @@ static int get_indirect(struct vhost_virtqueue *vq,
 	return 0;
 }
 
-/* This looks in the virtqueue and for the first available buffer, and converts
- * it to an iovec for convenient access.  Since descriptors consist of some
- * number of output then some number of input descriptors, it's actually two
- * iovecs, but we pack them into one and note how many of each there were.
+/**
+ * vhost_get_vq_desc_n - Fetch the next available descriptor chain and build iovecs
+ * @vq: target virtqueue
+ * @iov: array that receives the scatter/gather segments
+ * @iov_size: capacity of @iov in elements
+ * @out_num: the number of output segments
+ * @in_num: the number of input segments
+ * @log: optional array to record addr/len for each writable segment; NULL if unused
+ * @log_num: optional output; number of entries written to @log when provided
+ * @ndesc: optional output; number of descriptors consumed from the available ring
+ *         (useful for rollback via vhost_discard_vq_desc)
  *
- * This function returns the descriptor number found, or vq->num (which is
- * never a valid descriptor number) if none was found.  A negative code is
- * returned on error. */
-int vhost_get_vq_desc(struct vhost_virtqueue *vq,
-		      struct iovec iov[], unsigned int iov_size,
-		      unsigned int *out_num, unsigned int *in_num,
-		      struct vhost_log *log, unsigned int *log_num)
+ * Extracts one available descriptor chain from @vq and translates guest addresses
+ * into host iovecs.
+ *
+ * On success, advances @vq->last_avail_idx by 1 and @vq->next_avail_head by the
+ * number of descriptors consumed (also stored via @ndesc when non-NULL).
+ *
+ * Return:
+ * - head index in [0, @vq->num) on success;
+ * - @vq->num if no descriptor is currently available;
+ * - negative errno on failure
+ */
+int vhost_get_vq_desc_n(struct vhost_virtqueue *vq,
+			struct iovec iov[], unsigned int iov_size,
+			unsigned int *out_num, unsigned int *in_num,
+			struct vhost_log *log, unsigned int *log_num,
+			unsigned int *ndesc)
 {
 	bool in_order = vhost_has_feature(vq, VIRTIO_F_IN_ORDER);
 	struct vring_desc desc;
@@ -2921,17 +2937,49 @@ int vhost_get_vq_desc(struct vhost_virtqueue *vq,
 	vq->last_avail_idx++;
 	vq->next_avail_head += c;
 
+	if (ndesc)
+		*ndesc = c;
+
 	/* Assume notifications from guest are disabled at this point,
 	 * if they aren't we would need to update avail_event index. */
 	BUG_ON(!(vq->used_flags & VRING_USED_F_NO_NOTIFY));
 	return head;
 }
+EXPORT_SYMBOL_GPL(vhost_get_vq_desc_n);
+
+/* This looks in the virtqueue and for the first available buffer, and converts
+ * it to an iovec for convenient access.  Since descriptors consist of some
+ * number of output then some number of input descriptors, it's actually two
+ * iovecs, but we pack them into one and note how many of each there were.
+ *
+ * This function returns the descriptor number found, or vq->num (which is
+ * never a valid descriptor number) if none was found.  A negative code is
+ * returned on error.
+ */
+int vhost_get_vq_desc(struct vhost_virtqueue *vq,
+		      struct iovec iov[], unsigned int iov_size,
+		      unsigned int *out_num, unsigned int *in_num,
+		      struct vhost_log *log, unsigned int *log_num)
+{
+	return vhost_get_vq_desc_n(vq, iov, iov_size, out_num, in_num,
+				   log, log_num, NULL);
+}
 EXPORT_SYMBOL_GPL(vhost_get_vq_desc);
 
-/* Reverse the effect of vhost_get_vq_desc. Useful for error handling. */
-void vhost_discard_vq_desc(struct vhost_virtqueue *vq, int n)
+/**
+ * vhost_discard_vq_desc - Reverse the effect of vhost_get_vq_desc_n()
+ * @vq: target virtqueue
+ * @nbufs: number of buffers to roll back
+ * @ndesc: number of descriptors to roll back
+ *
+ * Rewinds the internal consumer cursors after a failed attempt to use buffers
+ * returned by vhost_get_vq_desc_n().
+ */
+void vhost_discard_vq_desc(struct vhost_virtqueue *vq, int nbufs,
+			   unsigned int ndesc)
 {
-	vq->last_avail_idx -= n;
+	vq->next_avail_head -= ndesc;
+	vq->last_avail_idx -= nbufs;
 }
 EXPORT_SYMBOL_GPL(vhost_discard_vq_desc);
 
diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h
index 621a6d9a8791..b49f08e4a1b4 100644
--- a/drivers/vhost/vhost.h
+++ b/drivers/vhost/vhost.h
@@ -230,7 +230,15 @@ int vhost_get_vq_desc(struct vhost_virtqueue *,
 		      struct iovec iov[], unsigned int iov_size,
 		      unsigned int *out_num, unsigned int *in_num,
 		      struct vhost_log *log, unsigned int *log_num);
-void vhost_discard_vq_desc(struct vhost_virtqueue *, int n);
+
+int vhost_get_vq_desc_n(struct vhost_virtqueue *vq,
+			struct iovec iov[], unsigned int iov_size,
+			unsigned int *out_num, unsigned int *in_num,
+			struct vhost_log *log, unsigned int *log_num,
+			unsigned int *ndesc);
+
+void vhost_discard_vq_desc(struct vhost_virtqueue *, int nbuf,
+			   unsigned int ndesc);
 
 bool vhost_vq_work_queue(struct vhost_virtqueue *vq, struct vhost_work *work);
 bool vhost_vq_has_work(struct vhost_virtqueue *vq);
-- 
2.52.0




  parent reply	other threads:[~2025-12-03 15:52 UTC|newest]

Thread overview: 173+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-03 15:26 [PATCH 6.17 000/146] 6.17.11-rc1 review Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 001/146] can: kvaser_usb: leaf: Fix potential infinite loop in command parsers Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 002/146] can: gs_usb: gs_usb_xmit_callback(): fix handling of failed transmitted URBs Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 003/146] can: gs_usb: gs_usb_receive_bulk_callback(): check actual_length before accessing header Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 004/146] can: gs_usb: gs_usb_receive_bulk_callback(): check actual_length before accessing data Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 005/146] Bluetooth: btusb: mediatek: Fix kernel crash when releasing mtk iso interface Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 006/146] Bluetooth: hci_core: Fix triggering cmd_timer for HCI_OP_NOP Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 007/146] Bluetooth: hci_sock: Prevent race in socket write iter and sock bind Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 008/146] Bluetooth: hci_core: lookup hci_conn on RX path on protocol side Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 009/146] Bluetooth: SMP: Fix not generating mackey and ltk when repairing Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 010/146] veth: reduce XDP no_direct return section to fix race Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 011/146] drm/bridge: sii902x: Fix HDMI detection with DRM_BRIDGE_ATTACH_NO_CONNECTOR Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 012/146] net: phy: mxl-gpy: fix bogus error on USXGMII and integrated PHY Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 013/146] platform/x86: intel: punit_ipc: fix memory corruption Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 014/146] net: aquantia: Add missing descriptor cache invalidation on ATL2 Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 015/146] net: phy: mxl-gpy: fix link properties on USXGMII and internal PHYs Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 016/146] net: lan966x: Fix the initialization of taprio Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 017/146] drm/xe: Fix conversion from clock ticks to milliseconds Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 018/146] net/mlx5e: Fix validation logic in rate limiting Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 019/146] team: Move team device type change at the end of team_port_add Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 020/146] net: sxgbe: fix potential NULL dereference in sxgbe_rx() Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 021/146] xsk: avoid overwriting skb fields for multi-buffer traffic Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 022/146] xsk: avoid data corruption on cq descriptor number Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 023/146] drm/amdgpu: fix cyan_skillfish2 gpu info fw handling Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 024/146] dma-direct: Fix missing sg_dma_len assignment in P2PDMA bus mappings Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 025/146] net: wwan: mhi: Keep modem name match with Foxconn T99W640 Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 026/146] net: dsa: sja1105: fix SGMII linking at 10M or 100M but not passing traffic Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 027/146] eth: fbnic: Fix counter roll-over issue Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 028/146] net: atlantic: fix fragment overflow handling in RX path Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 029/146] net: mctp: unconditionally set skb->dev on dst output Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 030/146] net: fec: cancel perout_timer when PEROUT is disabled Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 031/146] net: fec: do not update PEROUT if it is enabled Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 032/146] net: fec: do not allow enabling PPS and PEROUT simultaneously Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 033/146] net: fec: do not register PPS event for PEROUT Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 034/146] iio: st_lsm6dsx: Fixed calibrated timestamp calculation Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 035/146] usb: gadget: renesas_usbf: Handle devm_pm_runtime_enable() errors Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 036/146] mailbox: mailbox-test: Fix debugfs_create_dir error checking Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 037/146] mailbox: mtk-cmdq: Refine DMA address handling for the command buffer Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 038/146] mailbox: pcc: dont zero error register Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 039/146] spi: spi-cadence-quadspi: Remove duplicate pm_runtime_put_autosuspend() call Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 040/146] spi: spi-cadence-quadspi: Enable pm runtime earlier to avoid imbalance Greg Kroah-Hartman
2025-12-03 15:26 ` [PATCH 6.17 041/146] fs/namespace: fix reference leak in grab_requested_mnt_ns Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 042/146] afs: Fix delayed allocation of a cells anonymous key Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 043/146] ovl: fail ovl_lock_rename_workdir() if either target is unhashed Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 044/146] riscv: dts: allwinner: d1: fix vlenb property Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 045/146] spi: tegra114: remove Kconfig dependency on TEGRA20_APB_DMA Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 046/146] spi: amlogic-spifc-a1: Handle devm_pm_runtime_enable() errors Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 047/146] spi: spi-nxp-fspi: Add OCT-DTR mode support Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 048/146] spi: nxp-fspi: Propagate fwnode in ACPI case as well Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 049/146] spi: bcm63xx: fix premature CS deassertion on RX-only transactions Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 050/146] afs: Fix uninit var in afs_alloc_anon_key() Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 051/146] timekeeping: Fix error code in tk_aux_sysfs_init() Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 052/146] Revert "drm/amd/display: Move setup_stream_attribute" Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 053/146] Revert "perf/x86: Always store regs->ip in perf_callchain_kernel()" Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 054/146] iio: buffer-dma: support getting the DMA channel Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 055/146] iio: buffer-dmaengine: enable .get_dma_dev() Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 056/146] iio: buffer: support getting dma channel from the buffer Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 057/146] iio: humditiy: hdc3020: fix units for temperature and humidity measurement Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 058/146] iio: humditiy: hdc3020: fix units for thresholds and hysteresis Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 059/146] iio: imu: st_lsm6dsx: fix array size for st_lsm6dsx_settings fields Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 060/146] iio: pressure: bmp280: correct meas_time_us calculation Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 061/146] iio:common:ssp_sensors: Fix an error handling path ssp_probe() Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 062/146] iio: adc: stm32-dfsdm: fix st,adc-alt-channel property handling Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 063/146] iio: accel: bmc150: Fix irq assumption regression Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 064/146] iio: accel: fix ADXL355 startup race condition Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 065/146] iio: adc: ad4030: Fix _scale value for common-mode channels Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 066/146] iio: adc: ad7124: fix temperature channel Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 067/146] iio: adc: ad7280a: fix ad7280_store_balance_timer() Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 068/146] iio: adc: ad7380: fix SPI offload trigger rate Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 069/146] iio: adc: rtq6056: Correct the sign bit index Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 070/146] MIPS: mm: Prevent a TLB shutdown on initial uniquification Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 071/146] MIPS: mm: kmalloc tlb_vpn array to avoid stack overflow Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 072/146] virtio-net: avoid unnecessary checksum calculation on guest RX Greg Kroah-Hartman
2025-12-03 15:27 ` Greg Kroah-Hartman [this message]
2025-12-03 15:27 ` [PATCH 6.17 074/146] tracing: Fix WARN_ON in tracing_buffers_mmap_close for split VMAs Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 075/146] ALSA: hda/cirrus fix cs420x MacPro 6,1 inverted jack detection Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 076/146] ALSA: usb-audio: Add DSD quirk for LEAK Stereo 230 Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 077/146] arm64: dts: imx8dxl-ss-conn: swap interrupts number of eqos Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 078/146] arm64: dts: imx8dxl: Correct pcie-ep interrupt number Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 079/146] arm64: dts: imx8qm-mek: fix mux-controller select/enable-gpios polarity Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 080/146] ARM: dts: nxp: imx6ul: correct SAI3 interrupt line Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 081/146] atm/fore200e: Fix possible data race in fore200e_open() Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 082/146] Bluetooth: btusb: mediatek: Avoid btusb_mtk_claim_iso_intf() NULL deref Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 083/146] can: rcar_canfd: Fix CAN-FD mode as default Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 084/146] can: sja1000: fix max irq loop handling Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 085/146] can: sun4i_can: sun4i_can_interrupt(): " Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 086/146] ceph: fix crash in process_v2_sparse_read() for encrypted directories Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 087/146] counter: microchip-tcb-capture: Allow shared IRQ for multi-channel TCBs Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 088/146] dm-verity: fix unreliable memory allocation Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 089/146] drivers/usb/dwc3: fix PCI parent check Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 090/146] drm, fbcon, vga_switcheroo: Avoid race condition in fbcon setup Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 091/146] smb: client: fix memory leak in cifs_construct_tcon() Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 092/146] thunderbolt: Add support for Intel Wildcat Lake Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 093/146] slimbus: ngd: Fix reference count leak in qcom_slim_ngd_notify_slaves Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 094/146] nvmem: layouts: fix nvmem_layout_bus_uevent Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 095/146] pmdomain: tegra: Add GENPD_FLAG_NO_STAY_ON flag Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 096/146] r8169: fix RTL8127 hang on suspend/shutdown Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 097/146] regulator: rtq2208: Correct buck group2 phase mapping logic Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 098/146] regulator: rtq2208: Correct LDO2 logic judgment bits Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 099/146] io_uring/net: ensure vectored buffer node import is tied to notification Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 100/146] firmware: stratix10-svc: fix bug in saving controller data Greg Kroah-Hartman
2025-12-03 15:27 ` [PATCH 6.17 101/146] iommufd/driver: Fix counter initialization for counted_by annotation Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 102/146] mm/huge_memory: fix NULL pointer deference when splitting folio Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 103/146] mm/memfd: fix information leak in hugetlb folios Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 104/146] mmc: sdhci-of-dwcmshc: Promote the th1520 reset handling to ip level Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 105/146] mptcp: clear scheduled subflows on retransmit Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 106/146] mptcp: Initialise rcv_mss before calling tcp_send_active_reset() in mptcp_do_fastclose() Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 107/146] serial: 8250: Fix 8250_rsa symbol loop Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 108/146] serial: amba-pl011: prefer dma_mapping_error() over explicit address checking Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 109/146] most: usb: fix double free on late probe failure Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 110/146] usb: cdns3: Fix double resource release in cdns3_pci_probe Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 111/146] usb: gadget: f_eem: Fix memory leak in eem_unwrap Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 112/146] usb: renesas_usbhs: Fix synchronous external abort on unbind Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 113/146] usb: storage: Fix memory leak in USB bulk transport Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 114/146] USB: storage: Remove subclass and protocol overrides from Novatek quirk Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 115/146] usb: storage: sddr55: Reject out-of-bound new_pba Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 116/146] usb: typec: ucsi: psy: Set max current to zero when disconnected Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 117/146] usb: uas: fix urb unmapping issue when the uas device is remove during ongoing data transfer Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 118/146] usb: dwc3: pci: add support for the Intel Nova Lake -S Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 119/146] usb: dwc3: pci: Sort out the Intel device IDs Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 120/146] usb: dwc3: Fix race condition between concurrent dwc3_remove_requests() call paths Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 121/146] xhci: fix stale flag preventig URBs after link state error is cleared Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 122/146] xhci: dbgtty: Fix data corruption when transmitting data form DbC to host Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 123/146] xhci: dbgtty: fix device unregister Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 124/146] USB: serial: ftdi_sio: add support for u-blox EVK-M101 Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 125/146] USB: serial: option: add support for Rolling RW101R-GL Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 126/146] drm: sti: fix device leaks at component probe Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 127/146] drm/i915/psr: Reject async flips when selective fetch is enabled Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 128/146] drm/xe/guc: Fix stack_depot usage Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 129/146] drm/amdgpu: attach tlb fence to the PTs update Greg Kroah-Hartman
2025-12-03 16:03   ` Christian König
2025-12-03 16:24     ` Greg Kroah-Hartman
2025-12-04  8:07       ` Christian König
2025-12-04 16:14         ` Greg Kroah-Hartman
2025-12-03 16:48     ` Deucher, Alexander
2025-12-08 15:31       ` Deucher, Alexander
2025-12-08 23:13         ` Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 130/146] drm/amd/amdgpu: reserve vm invalidation engine for uni_mes Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 131/146] drm/amd/display: Check NULL before accessing Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 132/146] drm/amd/display: Dont change brightness for disabled connectors Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 133/146] drm/amd/display: Increase EDID read retries Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 134/146] net: dsa: microchip: common: Fix checks on irq_find_mapping() Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 135/146] net: dsa: microchip: ptp: " Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 136/146] net: dsa: microchip: Dont free uninitialized ksz_irq Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 137/146] net: dsa: microchip: Free previously initialized ports on init failures Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 138/146] net: dsa: microchip: Fix symetry in ksz_ptp_msg_irq_{setup/free}() Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 139/146] libceph: fix potential use-after-free in have_mon_and_osd_map() Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 140/146] libceph: prevent potential out-of-bounds writes in handle_auth_session_key() Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 141/146] libceph: replace BUG_ON with bounds check for map->max_osd Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 142/146] mm: swap: remove duplicate nr_swap_pages decrement in get_swap_page_of_type() Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 143/146] usb: udc: Add trace event for usb_gadget_set_state Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 144/146] usb: gadget: udc: fix use-after-free in usb_gadget_state_work Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 145/146] Revert "ACPI: Suppress misleading SPCR console message when SPCR table is absent" Greg Kroah-Hartman
2025-12-03 15:28 ` [PATCH 6.17 146/146] spi: cadence-quadspi: Fix cqspi_probe() error handling for runtime pm Greg Kroah-Hartman
2025-12-03 17:23 ` [PATCH 6.17 000/146] 6.17.11-rc1 review Ronald Warsow
2025-12-03 19:02 ` Florian Fainelli
2025-12-03 20:36 ` Achill Gilgenast
2025-12-03 20:56 ` Takeshi Ogasawara
2025-12-03 23:43 ` Shuah Khan
2025-12-04  9:08 ` Jeffrin Thalakkottoor
2025-12-04 16:16   ` Greg Kroah-Hartman
2025-12-05  8:20     ` Jeffrin Thalakkottoor
2025-12-05 11:51     ` Jeffrin Thalakkottoor
2025-12-05 12:11       ` Slade Watkins
2025-12-05 16:19         ` Jeffrin Thalakkottoor
2025-12-04  9:50 ` Naresh Kamboju
2025-12-04  9:50 ` Peter Schneider
2025-12-04 10:00 ` Jon Hunter
2025-12-04 10:27 ` Ron Economos
2025-12-04 10:36 ` Dileep malepu
2025-12-04 11:29 ` Mark Brown
2025-12-05  9:35 ` Miguel Ojeda
2025-12-05 10:51 ` Brett A C Sheffield

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=20251203152349.138986657@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=jasowang@redhat.com \
    --cc=kuba@kernel.org \
    --cc=mst@redhat.com \
    --cc=patches@lists.linux.dev \
    --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.