patches.lists.linux.dev archive mirror
 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, David Howells <dhowells@redhat.com>,
	Marc Dionne <marc.dionne@auristor.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	linux-afs@lists.infradead.org, netdev@vger.kernel.org,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.7 052/124] rxrpc: Fix counting of new acks and nacks
Date: Tue, 13 Feb 2024 18:21:14 +0100	[thread overview]
Message-ID: <20240213171855.259591828@linuxfoundation.org> (raw)
In-Reply-To: <20240213171853.722912593@linuxfoundation.org>

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

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

From: David Howells <dhowells@redhat.com>

[ Upstream commit 41b7fa157ea1c8c3a575ca7f5f32034de9bee3ae ]

Fix the counting of new acks and nacks when parsing a packet - something
that is used in congestion control.

As the code stands, it merely notes if there are any nacks whereas what we
really should do is compare the previous SACK table to the new one,
assuming we get two successive ACK packets with nacks in them.  However, we
really don't want to do that if we can avoid it as the tables might not
correspond directly as one may be shifted from the other - something that
will only get harder to deal with once extended ACK tables come into full
use (with a capacity of up to 8192).

Instead, count the number of nacks shifted out of the old SACK, the number
of nacks retained in the portion still active and the number of new acks
and nacks in the new table then calculate what we need.

Note this ends up a bit of an estimate as the Rx protocol allows acks to be
withdrawn by the receiver and packets requested to be retransmitted.

Fixes: d57a3a151660 ("rxrpc: Save last ACK's SACK table rather than marking txbufs")
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: "David S. Miller" <davem@davemloft.net>
cc: Eric Dumazet <edumazet@google.com>
cc: Jakub Kicinski <kuba@kernel.org>
cc: Paolo Abeni <pabeni@redhat.com>
cc: linux-afs@lists.infradead.org
cc: netdev@vger.kernel.org
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/trace/events/rxrpc.h |   8 ++-
 net/rxrpc/ar-internal.h      |  20 ++++--
 net/rxrpc/call_event.c       |   6 +-
 net/rxrpc/call_object.c      |   1 +
 net/rxrpc/input.c            | 115 +++++++++++++++++++++++++++++------
 5 files changed, 122 insertions(+), 28 deletions(-)

diff --git a/include/trace/events/rxrpc.h b/include/trace/events/rxrpc.h
index 4c1ef7b3705c..87b8de9b6c1c 100644
--- a/include/trace/events/rxrpc.h
+++ b/include/trace/events/rxrpc.h
@@ -128,6 +128,7 @@
 	EM(rxrpc_skb_eaten_by_unshare_nomem,	"ETN unshar-nm") \
 	EM(rxrpc_skb_get_conn_secured,		"GET conn-secd") \
 	EM(rxrpc_skb_get_conn_work,		"GET conn-work") \
+	EM(rxrpc_skb_get_last_nack,		"GET last-nack") \
 	EM(rxrpc_skb_get_local_work,		"GET locl-work") \
 	EM(rxrpc_skb_get_reject_work,		"GET rej-work ") \
 	EM(rxrpc_skb_get_to_recvmsg,		"GET to-recv  ") \
@@ -141,6 +142,7 @@
 	EM(rxrpc_skb_put_error_report,		"PUT error-rep") \
 	EM(rxrpc_skb_put_input,			"PUT input    ") \
 	EM(rxrpc_skb_put_jumbo_subpacket,	"PUT jumbo-sub") \
+	EM(rxrpc_skb_put_last_nack,		"PUT last-nack") \
 	EM(rxrpc_skb_put_purge,			"PUT purge    ") \
 	EM(rxrpc_skb_put_rotate,		"PUT rotate   ") \
 	EM(rxrpc_skb_put_unknown,		"PUT unknown  ") \
@@ -1552,7 +1554,7 @@ TRACE_EVENT(rxrpc_congest,
 		    memcpy(&__entry->sum, summary, sizeof(__entry->sum));
 			   ),
 
-	    TP_printk("c=%08x r=%08x %s q=%08x %s cw=%u ss=%u nA=%u,%u+%u r=%u b=%u u=%u d=%u l=%x%s%s%s",
+	    TP_printk("c=%08x r=%08x %s q=%08x %s cw=%u ss=%u nA=%u,%u+%u,%u b=%u u=%u d=%u l=%x%s%s%s",
 		      __entry->call,
 		      __entry->ack_serial,
 		      __print_symbolic(__entry->sum.ack_reason, rxrpc_ack_names),
@@ -1560,9 +1562,9 @@ TRACE_EVENT(rxrpc_congest,
 		      __print_symbolic(__entry->sum.mode, rxrpc_congest_modes),
 		      __entry->sum.cwnd,
 		      __entry->sum.ssthresh,
-		      __entry->sum.nr_acks, __entry->sum.saw_nacks,
+		      __entry->sum.nr_acks, __entry->sum.nr_retained_nacks,
 		      __entry->sum.nr_new_acks,
-		      __entry->sum.nr_rot_new_acks,
+		      __entry->sum.nr_new_nacks,
 		      __entry->top - __entry->hard_ack,
 		      __entry->sum.cumulative_acks,
 		      __entry->sum.dup_acks,
diff --git a/net/rxrpc/ar-internal.h b/net/rxrpc/ar-internal.h
index 041add7654b2..027414dafe7f 100644
--- a/net/rxrpc/ar-internal.h
+++ b/net/rxrpc/ar-internal.h
@@ -198,11 +198,19 @@ struct rxrpc_host_header {
  */
 struct rxrpc_skb_priv {
 	struct rxrpc_connection *conn;	/* Connection referred to (poke packet) */
-	u16		offset;		/* Offset of data */
-	u16		len;		/* Length of data */
-	u8		flags;
+	union {
+		struct {
+			u16		offset;		/* Offset of data */
+			u16		len;		/* Length of data */
+			u8		flags;
 #define RXRPC_RX_VERIFIED	0x01
-
+		};
+		struct {
+			rxrpc_seq_t	first_ack;	/* First packet in acks table */
+			u8		nr_acks;	/* Number of acks+nacks */
+			u8		nr_nacks;	/* Number of nacks */
+		};
+	};
 	struct rxrpc_host_header hdr;	/* RxRPC packet header from this packet */
 };
 
@@ -689,6 +697,7 @@ struct rxrpc_call {
 	u8			cong_dup_acks;	/* Count of ACKs showing missing packets */
 	u8			cong_cumul_acks; /* Cumulative ACK count */
 	ktime_t			cong_tstamp;	/* Last time cwnd was changed */
+	struct sk_buff		*cong_last_nack; /* Last ACK with nacks received */
 
 	/* Receive-phase ACK management (ACKs we send). */
 	u8			ackr_reason;	/* reason to ACK */
@@ -726,7 +735,8 @@ struct rxrpc_call {
 struct rxrpc_ack_summary {
 	u16			nr_acks;		/* Number of ACKs in packet */
 	u16			nr_new_acks;		/* Number of new ACKs in packet */
-	u16			nr_rot_new_acks;	/* Number of rotated new ACKs */
+	u16			nr_new_nacks;		/* Number of new nacks in packet */
+	u16			nr_retained_nacks;	/* Number of nacks retained between ACKs */
 	u8			ack_reason;
 	bool			saw_nacks;		/* Saw NACKs in packet */
 	bool			new_low_nack;		/* T if new low NACK found */
diff --git a/net/rxrpc/call_event.c b/net/rxrpc/call_event.c
index c61efe08695d..0f78544d043b 100644
--- a/net/rxrpc/call_event.c
+++ b/net/rxrpc/call_event.c
@@ -112,6 +112,7 @@ static void rxrpc_congestion_timeout(struct rxrpc_call *call)
 void rxrpc_resend(struct rxrpc_call *call, struct sk_buff *ack_skb)
 {
 	struct rxrpc_ackpacket *ack = NULL;
+	struct rxrpc_skb_priv *sp;
 	struct rxrpc_txbuf *txb;
 	unsigned long resend_at;
 	rxrpc_seq_t transmitted = READ_ONCE(call->tx_transmitted);
@@ -139,14 +140,15 @@ void rxrpc_resend(struct rxrpc_call *call, struct sk_buff *ack_skb)
 	 * explicitly NAK'd packets.
 	 */
 	if (ack_skb) {
+		sp = rxrpc_skb(ack_skb);
 		ack = (void *)ack_skb->data + sizeof(struct rxrpc_wire_header);
 
-		for (i = 0; i < ack->nAcks; i++) {
+		for (i = 0; i < sp->nr_acks; i++) {
 			rxrpc_seq_t seq;
 
 			if (ack->acks[i] & 1)
 				continue;
-			seq = ntohl(ack->firstPacket) + i;
+			seq = sp->first_ack + i;
 			if (after(txb->seq, transmitted))
 				break;
 			if (after(txb->seq, seq))
diff --git a/net/rxrpc/call_object.c b/net/rxrpc/call_object.c
index 0943e54370ba..9fc9a6c3f685 100644
--- a/net/rxrpc/call_object.c
+++ b/net/rxrpc/call_object.c
@@ -686,6 +686,7 @@ static void rxrpc_destroy_call(struct work_struct *work)
 
 	del_timer_sync(&call->timer);
 
+	rxrpc_free_skb(call->cong_last_nack, rxrpc_skb_put_last_nack);
 	rxrpc_cleanup_ring(call);
 	while ((txb = list_first_entry_or_null(&call->tx_sendmsg,
 					       struct rxrpc_txbuf, call_link))) {
diff --git a/net/rxrpc/input.c b/net/rxrpc/input.c
index 92495e73b869..9691de00ade7 100644
--- a/net/rxrpc/input.c
+++ b/net/rxrpc/input.c
@@ -45,11 +45,9 @@ static void rxrpc_congestion_management(struct rxrpc_call *call,
 	}
 
 	cumulative_acks += summary->nr_new_acks;
-	cumulative_acks += summary->nr_rot_new_acks;
 	if (cumulative_acks > 255)
 		cumulative_acks = 255;
 
-	summary->mode = call->cong_mode;
 	summary->cwnd = call->cong_cwnd;
 	summary->ssthresh = call->cong_ssthresh;
 	summary->cumulative_acks = cumulative_acks;
@@ -151,6 +149,7 @@ static void rxrpc_congestion_management(struct rxrpc_call *call,
 		cwnd = RXRPC_TX_MAX_WINDOW;
 	call->cong_cwnd = cwnd;
 	call->cong_cumul_acks = cumulative_acks;
+	summary->mode = call->cong_mode;
 	trace_rxrpc_congest(call, summary, acked_serial, change);
 	if (resend)
 		rxrpc_resend(call, skb);
@@ -213,7 +212,6 @@ static bool rxrpc_rotate_tx_window(struct rxrpc_call *call, rxrpc_seq_t to,
 	list_for_each_entry_rcu(txb, &call->tx_buffer, call_link, false) {
 		if (before_eq(txb->seq, call->acks_hard_ack))
 			continue;
-		summary->nr_rot_new_acks++;
 		if (test_bit(RXRPC_TXBUF_LAST, &txb->flags)) {
 			set_bit(RXRPC_CALL_TX_LAST, &call->flags);
 			rot_last = true;
@@ -254,6 +252,11 @@ static void rxrpc_end_tx_phase(struct rxrpc_call *call, bool reply_begun,
 {
 	ASSERT(test_bit(RXRPC_CALL_TX_LAST, &call->flags));
 
+	if (unlikely(call->cong_last_nack)) {
+		rxrpc_free_skb(call->cong_last_nack, rxrpc_skb_put_last_nack);
+		call->cong_last_nack = NULL;
+	}
+
 	switch (__rxrpc_call_state(call)) {
 	case RXRPC_CALL_CLIENT_SEND_REQUEST:
 	case RXRPC_CALL_CLIENT_AWAIT_REPLY:
@@ -702,6 +705,43 @@ static void rxrpc_input_ackinfo(struct rxrpc_call *call, struct sk_buff *skb,
 		wake_up(&call->waitq);
 }
 
+/*
+ * Determine how many nacks from the previous ACK have now been satisfied.
+ */
+static rxrpc_seq_t rxrpc_input_check_prev_ack(struct rxrpc_call *call,
+					      struct rxrpc_ack_summary *summary,
+					      rxrpc_seq_t seq)
+{
+	struct sk_buff *skb = call->cong_last_nack;
+	struct rxrpc_ackpacket ack;
+	struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
+	unsigned int i, new_acks = 0, retained_nacks = 0;
+	rxrpc_seq_t old_seq = sp->first_ack;
+	u8 *acks = skb->data + sizeof(struct rxrpc_wire_header) + sizeof(ack);
+
+	if (after_eq(seq, old_seq + sp->nr_acks)) {
+		summary->nr_new_acks += sp->nr_nacks;
+		summary->nr_new_acks += seq - (old_seq + sp->nr_acks);
+		summary->nr_retained_nacks = 0;
+	} else if (seq == old_seq) {
+		summary->nr_retained_nacks = sp->nr_nacks;
+	} else {
+		for (i = 0; i < sp->nr_acks; i++) {
+			if (acks[i] == RXRPC_ACK_TYPE_NACK) {
+				if (before(old_seq + i, seq))
+					new_acks++;
+				else
+					retained_nacks++;
+			}
+		}
+
+		summary->nr_new_acks += new_acks;
+		summary->nr_retained_nacks = retained_nacks;
+	}
+
+	return old_seq + sp->nr_acks;
+}
+
 /*
  * Process individual soft ACKs.
  *
@@ -711,25 +751,51 @@ static void rxrpc_input_ackinfo(struct rxrpc_call *call, struct sk_buff *skb,
  * the timer on the basis that the peer might just not have processed them at
  * the time the ACK was sent.
  */
-static void rxrpc_input_soft_acks(struct rxrpc_call *call, u8 *acks,
-				  rxrpc_seq_t seq, int nr_acks,
-				  struct rxrpc_ack_summary *summary)
+static void rxrpc_input_soft_acks(struct rxrpc_call *call,
+				  struct rxrpc_ack_summary *summary,
+				  struct sk_buff *skb,
+				  rxrpc_seq_t seq,
+				  rxrpc_seq_t since)
 {
-	unsigned int i;
+	struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
+	unsigned int i, old_nacks = 0;
+	rxrpc_seq_t lowest_nak = seq + sp->nr_acks;
+	u8 *acks = skb->data + sizeof(struct rxrpc_wire_header) + sizeof(struct rxrpc_ackpacket);
 
-	for (i = 0; i < nr_acks; i++) {
+	for (i = 0; i < sp->nr_acks; i++) {
 		if (acks[i] == RXRPC_ACK_TYPE_ACK) {
 			summary->nr_acks++;
-			summary->nr_new_acks++;
+			if (after_eq(seq, since))
+				summary->nr_new_acks++;
 		} else {
-			if (!summary->saw_nacks &&
-			    call->acks_lowest_nak != seq + i) {
-				call->acks_lowest_nak = seq + i;
-				summary->new_low_nack = true;
-			}
 			summary->saw_nacks = true;
+			if (before(seq, since)) {
+				/* Overlap with previous ACK */
+				old_nacks++;
+			} else {
+				summary->nr_new_nacks++;
+				sp->nr_nacks++;
+			}
+
+			if (before(seq, lowest_nak))
+				lowest_nak = seq;
 		}
+		seq++;
+	}
+
+	if (lowest_nak != call->acks_lowest_nak) {
+		call->acks_lowest_nak = lowest_nak;
+		summary->new_low_nack = true;
 	}
+
+	/* We *can* have more nacks than we did - the peer is permitted to drop
+	 * packets it has soft-acked and re-request them.  Further, it is
+	 * possible for the nack distribution to change whilst the number of
+	 * nacks stays the same or goes down.
+	 */
+	if (old_nacks < summary->nr_retained_nacks)
+		summary->nr_new_acks += summary->nr_retained_nacks - old_nacks;
+	summary->nr_retained_nacks = old_nacks;
 }
 
 /*
@@ -773,7 +839,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
 	struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
 	struct rxrpc_ackinfo info;
 	rxrpc_serial_t ack_serial, acked_serial;
-	rxrpc_seq_t first_soft_ack, hard_ack, prev_pkt;
+	rxrpc_seq_t first_soft_ack, hard_ack, prev_pkt, since;
 	int nr_acks, offset, ioffset;
 
 	_enter("");
@@ -789,6 +855,8 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
 	prev_pkt = ntohl(ack.previousPacket);
 	hard_ack = first_soft_ack - 1;
 	nr_acks = ack.nAcks;
+	sp->first_ack = first_soft_ack;
+	sp->nr_acks = nr_acks;
 	summary.ack_reason = (ack.reason < RXRPC_ACK__INVALID ?
 			      ack.reason : RXRPC_ACK__INVALID);
 
@@ -858,6 +926,16 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
 	if (nr_acks > 0)
 		skb_condense(skb);
 
+	if (call->cong_last_nack) {
+		since = rxrpc_input_check_prev_ack(call, &summary, first_soft_ack);
+		rxrpc_free_skb(call->cong_last_nack, rxrpc_skb_put_last_nack);
+		call->cong_last_nack = NULL;
+	} else {
+		summary.nr_new_acks = first_soft_ack - call->acks_first_seq;
+		call->acks_lowest_nak = first_soft_ack + nr_acks;
+		since = first_soft_ack;
+	}
+
 	call->acks_latest_ts = skb->tstamp;
 	call->acks_first_seq = first_soft_ack;
 	call->acks_prev_seq = prev_pkt;
@@ -866,7 +944,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
 	case RXRPC_ACK_PING:
 		break;
 	default:
-		if (after(acked_serial, call->acks_highest_serial))
+		if (acked_serial && after(acked_serial, call->acks_highest_serial))
 			call->acks_highest_serial = acked_serial;
 		break;
 	}
@@ -905,8 +983,9 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
 	if (nr_acks > 0) {
 		if (offset > (int)skb->len - nr_acks)
 			return rxrpc_proto_abort(call, 0, rxrpc_eproto_ackr_short_sack);
-		rxrpc_input_soft_acks(call, skb->data + offset, first_soft_ack,
-				      nr_acks, &summary);
+		rxrpc_input_soft_acks(call, &summary, skb, first_soft_ack, since);
+		rxrpc_get_skb(skb, rxrpc_skb_get_last_nack);
+		call->cong_last_nack = skb;
 	}
 
 	if (test_bit(RXRPC_CALL_TX_LAST, &call->flags) &&
-- 
2.43.0




  parent reply	other threads:[~2024-02-13 17:38 UTC|newest]

Thread overview: 145+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-13 17:20 [PATCH 6.7 000/124] 6.7.5-rc1 review Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 001/124] ext4: regenerate buddy after block freeing failed if under fc replay Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 002/124] dmaengine: fsl-dpaa2-qdma: Fix the size of dma pools Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 003/124] dmaengine: ti: k3-udma: Report short packet errors Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 004/124] dmaengine: fsl-qdma: Fix a memory leak related to the status queue DMA Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 005/124] dmaengine: fsl-qdma: Fix a memory leak related to the queue command DMA Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 006/124] phy: qcom-qmp-usb: fix register offsets for ipq8074/ipq6018 Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 007/124] phy: qcom-qmp-usb: fix serdes init sequence for IPQ6018 Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 008/124] phy: renesas: rcar-gen3-usb2: Fix returning wrong error code Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 009/124] perf tests: Add perf script test Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 010/124] perf test: Fix perf script tests on s390 Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 011/124] perf evlist: Fix evlist__new_default() for > 1 core PMU Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 012/124] dmaengine: fix is_slave_direction() return false when DMA_DEV_TO_DEV Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 013/124] phy: ti: phy-omap-usb2: Fix NULL pointer dereference for SRP Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 014/124] cifs: avoid redundant calls to disable multichannel Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 015/124] cifs: failure to add channel on iface should bump up weight Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 016/124] drm/msms/dp: fixed link clock divider bits be over written in BPC unknown case Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 017/124] drm/msm/dp: return correct Colorimetry for DP_TEST_DYNAMIC_RANGE_CEA case Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 018/124] drm/msm/dpu: check for valid hw_pp in dpu_encoder_helper_phys_cleanup Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 019/124] wifi: iwlwifi: mvm: skip adding debugfs symlink for reconfig Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 020/124] x86/efistub: Give up if memory attribute protocol returns an error Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 021/124] x86/efistub: Avoid placing the kernel below LOAD_PHYSICAL_ADDR Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 022/124] net: stmmac: xgmac: fix handling of DPP safety error for DMA channels Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 023/124] wifi: cfg80211: consume both probe response and beacon IEs Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 024/124] wifi: cfg80211: detect stuck ECSA element in probe resp Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 025/124] wifi: mac80211: improve CSA/ECSA connection refusal Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 026/124] wifi: mac80211: fix RCU use in TDLS fast-xmit Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 027/124] wifi: mac80211: fix unsolicited broadcast probe config Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 028/124] wifi: mac80211: fix waiting for beacons logic Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 029/124] wifi: iwlwifi: exit eSR only after the FW does Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 030/124] wifi: brcmfmac: Adjust n_channels usage for __counted_by Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 031/124] netdevsim: avoid potential loop in nsim_dev_trap_report_work() Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 032/124] net: atlantic: Fix DMA mapping for PTP hwts ring Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 033/124] selftests: net: cut more slack for gro fwd tests Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 034/124] selftests/net: convert unicast_extensions.sh to run it in unique namespace Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 035/124] selftests/net: convert pmtu.sh " Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 036/124] selftests/net: change shebang to bash to support "source" Greg Kroah-Hartman
2024-02-13 17:20 ` [PATCH 6.7 037/124] selftests: net: fix tcp listener handling in pmtu.sh Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 038/124] selftests: net: avoid just another constant wait Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 039/124] tsnep: Fix mapping for zero copy XDP_TX action Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 040/124] tunnels: fix out of bounds access when building IPv6 PMTU error Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 041/124] atm: idt77252: fix a memleak in open_card_ubr0 Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 042/124] octeontx2-pf: Fix a memleak otx2_sq_init Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 043/124] hwmon: (aspeed-pwm-tacho) mutex for tach reading Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 044/124] hwmon: (coretemp) Fix out-of-bounds memory access Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 045/124] hwmon: (coretemp) Fix bogus core_id to attr name mapping Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 046/124] inet: read sk->sk_family once in inet_recv_error() Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 047/124] drm/i915/gvt: Fix uninitialized variable in handle_mmio() Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 048/124] x86/efistub: Use 1:1 file:memory mapping for PE/COFF .compat section Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 049/124] rxrpc: Fix generation of serial numbers to skip zero Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 050/124] rxrpc: Fix delayed ACKs to not set the reference serial number Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 051/124] rxrpc: Fix response to PING RESPONSE ACKs to a dead call Greg Kroah-Hartman
2024-02-13 17:21 ` Greg Kroah-Hartman [this message]
2024-02-13 17:21 ` [PATCH 6.7 053/124] selftests: net: let big_tcp test cope with slow env Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 054/124] tipc: Check the bearer type before calling tipc_udp_nl_bearer_add() Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 055/124] af_unix: Call kfree_skb() for dead unix_(sk)->oob_skb in GC Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 056/124] devlink: avoid potential loop in devlink_rel_nested_in_notify_work() Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 057/124] ppp_async: limit MRU to 64K Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 058/124] selftests: cmsg_ipv6: repeat the exact packet Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 059/124] netfilter: nft_compat: narrow down revision to unsigned 8-bits Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 060/124] netfilter: nft_compat: reject unused compat flag Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 061/124] netfilter: nft_compat: restrict match/target protocol to u16 Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 062/124] drm/amd/display: Fix panel_cntl could be null in dcn21_set_backlight_level() Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 063/124] drm/amd/display: Add NULL test for timing generator in dcn21_set_pipe() Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 064/124] drm/amd/display: Implement bounds check for stream encoder creation in DCN301 Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 065/124] netfilter: nft_set_pipapo: remove static in nft_pipapo_get() Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 066/124] netfilter: nft_ct: reject direction for ct id Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 067/124] netfilter: nf_tables: use timestamp to check for set element timeout Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 068/124] netfilter: nfnetlink_queue: un-break NF_REPEAT Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 069/124] netfilter: nft_set_pipapo: store index in scratch maps Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 070/124] netfilter: nft_set_pipapo: add helper to release pcpu scratch area Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 071/124] netfilter: nft_set_pipapo: remove scratch_aligned pointer Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 072/124] fs/ntfs3: Fix an NULL dereference bug Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 073/124] mm: Introduce flush_cache_vmap_early() Greg Kroah-Hartman
2024-02-14  9:04   ` Jiri Slaby
2024-02-14  9:59     ` Jiri Slaby
2024-02-14 14:29       ` Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 074/124] riscv: mm: execute local TLB flush after populating vmemmap Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 075/124] riscv: Fix set_huge_pte_at() for NAPOT mapping Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 076/124] riscv: Fix hugetlb_mask_last_page() when NAPOT is enabled Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 077/124] scsi: core: Move scsi_host_busy() out of host lock if it is for per-command Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 078/124] riscv: Flush the tlb when a page directory is freed Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 079/124] libceph: rename read_sparse_msg_*() to read_partial_sparse_msg_*() Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 080/124] libceph: just wait for more data to be available on the socket Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 081/124] ceph: always set initial i_blkbits to CEPH_FSCRYPT_BLOCK_SHIFT Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 082/124] riscv: Fix arch_hugetlb_migration_supported() for NAPOT Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 083/124] riscv: declare overflow_stack as exported from traps.c Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 084/124] nvme-host: fix the updating of the firmware version Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 085/124] selftests: core: include linux/close_range.h for CLOSE_RANGE_* macros Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 086/124] blk-iocost: Fix an UBSAN shift-out-of-bounds warning Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 087/124] ALSA: usb-audio: Add delay quirk for MOTU M Series 2nd revision Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 088/124] ALSA: usb-audio: Add a quirk for Yamaha YIT-W12TX transmitter Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 089/124] ALSA: usb-audio: add quirk for RODE NT-USB+ Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 090/124] USB: serial: qcserial: add new usb-id for Dell Wireless DW5826e Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 091/124] USB: serial: option: add Fibocom FM101-GL variant Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 092/124] USB: serial: cp210x: add ID for IMST iM871A-USB Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 093/124] Revert "usb: typec: tcpm: fix cc role at port reset" Greg Kroah-Hartman
2024-02-16  6:54   ` Thorsten Leemhuis
2024-02-16 18:46     ` Greg Kroah-Hartman
2024-02-17  7:37       ` Thorsten Leemhuis
2024-02-17 15:38       ` Mark Brown
2024-02-17 16:11         ` Greg Kroah-Hartman
2024-02-19 12:40           ` Mark Brown
2024-02-20  8:16             ` Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 094/124] Revert "drm/amd/pm: fix the high voltage and temperature issue" Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 095/124] x86/lib: Revert to _ASM_EXTABLE_UA() for {get,put}_user() fixups Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 096/124] usb: dwc3: host: Set XHCI_SG_TRB_CACHE_SIZE_QUIRK Greg Kroah-Hartman
2024-02-13 17:21 ` [PATCH 6.7 097/124] usb: host: xhci-plat: Add support for XHCI_SG_TRB_CACHE_SIZE_QUIRK Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 098/124] xhci: process isoc TD properly when there was a transaction error mid TD Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 099/124] xhci: handle isoc Babble and Buffer Overrun events properly Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 100/124] usb: dwc3: pci: add support for the Intel Arrow Lake-H Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 101/124] hrtimer: Report offline hrtimer enqueue Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 102/124] Input: i8042 - fix strange behavior of touchpad on Clevo NS70PU Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 103/124] Input: atkbd - skip ATKBD_CMD_SETLEDS when skipping ATKBD_CMD_GETID Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 104/124] wifi: iwlwifi: mvm: fix a battery life regression Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 105/124] io_uring/net: fix sr->len for IORING_OP_RECV with MSG_WAITALL and buffers Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 106/124] io_uring/poll: move poll execution helpers higher up Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 107/124] io_uring/net: un-indent mshot retry path in io_recv_finish() Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 108/124] io_uring/rw: ensure poll based multishot read retries appropriately Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 109/124] PCI/ASPM: Fix deadlock when enabling ASPM Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 110/124] new helper: user_path_locked_at() Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 111/124] bch2_ioctl_subvolume_destroy(): fix locking Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 112/124] bcachefs: Dont pass memcmp() as a pointer Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 113/124] bcachefs: rebalance should wakeup on shutdown if disabled Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 114/124] bcachefs: Add missing bch2_moving_ctxt_flush_all() Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 115/124] bcachefs: bch2_kthread_io_clock_wait() no longer sleeps until full amount Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 116/124] bcachefs: kvfree bch_fs::snapshots in bch2_fs_snapshots_exit Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 117/124] bcachefs: grab s_umount only if snapshotting Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 118/124] bcachefs: fix incorrect usage of REQ_OP_FLUSH Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 119/124] bcachefs: unlock parent dir if entry is not found in subvolume deletion Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 120/124] bcachefs: time_stats: Check for last_event == 0 when updating freq stats Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 121/124] Revert "ASoC: amd: Add new dmi entries for acp5x platform" Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 122/124] io_uring/poll: add requeue return code from poll multishot handling Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 123/124] io_uring/net: limit inline multishot retries Greg Kroah-Hartman
2024-02-13 17:22 ` [PATCH 6.7 124/124] net: Fix from address in memcpy_to_iter_csum() Greg Kroah-Hartman
2024-02-13 18:21 ` [PATCH 6.7 000/124] 6.7.5-rc1 review Luna Jernberg
2024-02-13 19:04 ` SeongJae Park
2024-02-13 22:19 ` Florian Fainelli
2024-02-13 22:47 ` Allen
2024-02-14  0:13 ` Shuah Khan
2024-02-14  7:22 ` Bagas Sanjaya
2024-02-14  9:08 ` Jon Hunter
2024-02-14  9:59 ` Naresh Kamboju
2024-02-14 11:13 ` Ron Economos
2024-02-14 12:19 ` Ricardo B. Marliere

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=20240213171855.259591828@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=davem@davemloft.net \
    --cc=dhowells@redhat.com \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=linux-afs@lists.infradead.org \
    --cc=marc.dionne@auristor.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).