linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, David Howells <dhowells@redhat.com>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.8 047/186] rxrpc: Fix loss of RTT samples due to interposed ACK
Date: Tue,  8 Sep 2020 17:23:09 +0200	[thread overview]
Message-ID: <20200908152243.944972190@linuxfoundation.org> (raw)
In-Reply-To: <20200908152241.646390211@linuxfoundation.org>

From: David Howells <dhowells@redhat.com>

[ Upstream commit 4700c4d80b7bb171f6996016ef121e1508860b42 ]

The Rx protocol has a mechanism to help generate RTT samples that works by
a client transmitting a REQUESTED-type ACK when it receives a DATA packet
that has the REQUEST_ACK flag set.

The peer, however, may interpose other ACKs before transmitting the
REQUESTED-ACK, as can be seen in the following trace excerpt:

 rxrpc_tx_data: c=00000044 DATA d0b5ece8:00000001 00000001 q=00000001 fl=07
 rxrpc_rx_ack: c=00000044 00000001 PNG r=00000000 f=00000002 p=00000000 n=0
 rxrpc_rx_ack: c=00000044 00000002 REQ r=00000001 f=00000002 p=00000001 n=0
 ...

DATA packet 1 (q=xx) has REQUEST_ACK set (bit 1 of fl=xx).  The incoming
ping (labelled PNG) hard-acks the request DATA packet (f=xx exceeds the
sequence number of the DATA packet), causing it to be discarded from the Tx
ring.  The ACK that was requested (labelled REQ, r=xx references the serial
of the DATA packet) comes after the ping, but the sk_buff holding the
timestamp has gone and the RTT sample is lost.

This is particularly noticeable on RPC calls used to probe the service
offered by the peer.  A lot of peers end up with an unknown RTT because we
only ever sent a single RPC.  This confuses the server rotation algorithm.

Fix this by caching the information about the outgoing packet in RTT
calculations in the rxrpc_call struct rather than looking in the Tx ring.

A four-deep buffer is maintained and both REQUEST_ACK-flagged DATA and
PING-ACK transmissions are recorded in there.  When the appropriate
response ACK is received, the buffer is checked for a match and, if found,
an RTT sample is recorded.

If a received ACK refers to a packet with a later serial number than an
entry in the cache, that entry is presumed lost and the entry is made
available to record a new transmission.

ACKs types other than REQUESTED-type and PING-type cause any matching
sample to be cancelled as they don't necessarily represent a useful
measurement.

If there's no space in the buffer on ping/data transmission, the sample
base is discarded.

Fixes: 50235c4b5a2f ("rxrpc: Obtain RTT data by requesting ACKs on DATA packets")
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 include/trace/events/rxrpc.h |  27 +++++++--
 net/rxrpc/ar-internal.h      |  13 +++--
 net/rxrpc/call_object.c      |   1 +
 net/rxrpc/input.c            | 104 ++++++++++++++++++++---------------
 net/rxrpc/output.c           |  82 ++++++++++++++++++++-------
 net/rxrpc/rtt.c              |   3 +-
 6 files changed, 154 insertions(+), 76 deletions(-)

diff --git a/include/trace/events/rxrpc.h b/include/trace/events/rxrpc.h
index 059b6e45a0283..c33079b986e86 100644
--- a/include/trace/events/rxrpc.h
+++ b/include/trace/events/rxrpc.h
@@ -138,11 +138,16 @@ enum rxrpc_recvmsg_trace {
 };
 
 enum rxrpc_rtt_tx_trace {
+	rxrpc_rtt_tx_cancel,
 	rxrpc_rtt_tx_data,
+	rxrpc_rtt_tx_no_slot,
 	rxrpc_rtt_tx_ping,
 };
 
 enum rxrpc_rtt_rx_trace {
+	rxrpc_rtt_rx_cancel,
+	rxrpc_rtt_rx_lost,
+	rxrpc_rtt_rx_obsolete,
 	rxrpc_rtt_rx_ping_response,
 	rxrpc_rtt_rx_requested_ack,
 };
@@ -339,10 +344,15 @@ enum rxrpc_tx_point {
 	E_(rxrpc_recvmsg_wait,			"WAIT")
 
 #define rxrpc_rtt_tx_traces \
+	EM(rxrpc_rtt_tx_cancel,			"CNCE") \
 	EM(rxrpc_rtt_tx_data,			"DATA") \
+	EM(rxrpc_rtt_tx_no_slot,		"FULL") \
 	E_(rxrpc_rtt_tx_ping,			"PING")
 
 #define rxrpc_rtt_rx_traces \
+	EM(rxrpc_rtt_rx_cancel,			"CNCL") \
+	EM(rxrpc_rtt_rx_obsolete,		"OBSL") \
+	EM(rxrpc_rtt_rx_lost,			"LOST") \
 	EM(rxrpc_rtt_rx_ping_response,		"PONG") \
 	E_(rxrpc_rtt_rx_requested_ack,		"RACK")
 
@@ -1087,38 +1097,43 @@ TRACE_EVENT(rxrpc_recvmsg,
 
 TRACE_EVENT(rxrpc_rtt_tx,
 	    TP_PROTO(struct rxrpc_call *call, enum rxrpc_rtt_tx_trace why,
-		     rxrpc_serial_t send_serial),
+		     int slot, rxrpc_serial_t send_serial),
 
-	    TP_ARGS(call, why, send_serial),
+	    TP_ARGS(call, why, slot, send_serial),
 
 	    TP_STRUCT__entry(
 		    __field(unsigned int,		call		)
 		    __field(enum rxrpc_rtt_tx_trace,	why		)
+		    __field(int,			slot		)
 		    __field(rxrpc_serial_t,		send_serial	)
 			     ),
 
 	    TP_fast_assign(
 		    __entry->call = call->debug_id;
 		    __entry->why = why;
+		    __entry->slot = slot;
 		    __entry->send_serial = send_serial;
 			   ),
 
-	    TP_printk("c=%08x %s sr=%08x",
+	    TP_printk("c=%08x [%d] %s sr=%08x",
 		      __entry->call,
+		      __entry->slot,
 		      __print_symbolic(__entry->why, rxrpc_rtt_tx_traces),
 		      __entry->send_serial)
 	    );
 
 TRACE_EVENT(rxrpc_rtt_rx,
 	    TP_PROTO(struct rxrpc_call *call, enum rxrpc_rtt_rx_trace why,
+		     int slot,
 		     rxrpc_serial_t send_serial, rxrpc_serial_t resp_serial,
 		     u32 rtt, u32 rto),
 
-	    TP_ARGS(call, why, send_serial, resp_serial, rtt, rto),
+	    TP_ARGS(call, why, slot, send_serial, resp_serial, rtt, rto),
 
 	    TP_STRUCT__entry(
 		    __field(unsigned int,		call		)
 		    __field(enum rxrpc_rtt_rx_trace,	why		)
+		    __field(int,			slot		)
 		    __field(rxrpc_serial_t,		send_serial	)
 		    __field(rxrpc_serial_t,		resp_serial	)
 		    __field(u32,			rtt		)
@@ -1128,14 +1143,16 @@ TRACE_EVENT(rxrpc_rtt_rx,
 	    TP_fast_assign(
 		    __entry->call = call->debug_id;
 		    __entry->why = why;
+		    __entry->slot = slot;
 		    __entry->send_serial = send_serial;
 		    __entry->resp_serial = resp_serial;
 		    __entry->rtt = rtt;
 		    __entry->rto = rto;
 			   ),
 
-	    TP_printk("c=%08x %s sr=%08x rr=%08x rtt=%u rto=%u",
+	    TP_printk("c=%08x [%d] %s sr=%08x rr=%08x rtt=%u rto=%u",
 		      __entry->call,
+		      __entry->slot,
 		      __print_symbolic(__entry->why, rxrpc_rtt_rx_traces),
 		      __entry->send_serial,
 		      __entry->resp_serial,
diff --git a/net/rxrpc/ar-internal.h b/net/rxrpc/ar-internal.h
index 9a2139ebd67d7..ca1fea72c8d29 100644
--- a/net/rxrpc/ar-internal.h
+++ b/net/rxrpc/ar-internal.h
@@ -488,7 +488,6 @@ enum rxrpc_call_flag {
 	RXRPC_CALL_RX_LAST,		/* Received the last packet (at rxtx_top) */
 	RXRPC_CALL_TX_LAST,		/* Last packet in Tx buffer (at rxtx_top) */
 	RXRPC_CALL_SEND_PING,		/* A ping will need to be sent */
-	RXRPC_CALL_PINGING,		/* Ping in process */
 	RXRPC_CALL_RETRANS_TIMEOUT,	/* Retransmission due to timeout occurred */
 	RXRPC_CALL_BEGAN_RX_TIMER,	/* We began the expect_rx_by timer */
 	RXRPC_CALL_RX_HEARD,		/* The peer responded at least once to this call */
@@ -673,9 +672,13 @@ struct rxrpc_call {
 	rxrpc_seq_t		ackr_consumed;	/* Highest packet shown consumed */
 	rxrpc_seq_t		ackr_seen;	/* Highest packet shown seen */
 
-	/* ping management */
-	rxrpc_serial_t		ping_serial;	/* Last ping sent */
-	ktime_t			ping_time;	/* Time last ping sent */
+	/* RTT management */
+	rxrpc_serial_t		rtt_serial[4];	/* Serial number of DATA or PING sent */
+	ktime_t			rtt_sent_at[4];	/* Time packet sent */
+	unsigned long		rtt_avail;	/* Mask of available slots in bits 0-3,
+						 * Mask of pending samples in 8-11 */
+#define RXRPC_CALL_RTT_AVAIL_MASK	0xf
+#define RXRPC_CALL_RTT_PEND_SHIFT	8
 
 	/* transmission-phase ACK management */
 	ktime_t			acks_latest_ts;	/* Timestamp of latest ACK received */
@@ -1037,7 +1040,7 @@ static inline bool __rxrpc_abort_eproto(struct rxrpc_call *call,
 /*
  * rtt.c
  */
-void rxrpc_peer_add_rtt(struct rxrpc_call *, enum rxrpc_rtt_rx_trace,
+void rxrpc_peer_add_rtt(struct rxrpc_call *, enum rxrpc_rtt_rx_trace, int,
 			rxrpc_serial_t, rxrpc_serial_t, ktime_t, ktime_t);
 unsigned long rxrpc_get_rto_backoff(struct rxrpc_peer *, bool);
 void rxrpc_peer_init_rtt(struct rxrpc_peer *);
diff --git a/net/rxrpc/call_object.c b/net/rxrpc/call_object.c
index 38a46167523fa..a40fae0139423 100644
--- a/net/rxrpc/call_object.c
+++ b/net/rxrpc/call_object.c
@@ -153,6 +153,7 @@ struct rxrpc_call *rxrpc_alloc_call(struct rxrpc_sock *rx, gfp_t gfp,
 	call->cong_ssthresh = RXRPC_RXTX_BUFF_SIZE - 1;
 
 	call->rxnet = rxnet;
+	call->rtt_avail = RXRPC_CALL_RTT_AVAIL_MASK;
 	atomic_inc(&rxnet->nr_calls);
 	return call;
 
diff --git a/net/rxrpc/input.c b/net/rxrpc/input.c
index a7699e56eac88..19ddfc9807e89 100644
--- a/net/rxrpc/input.c
+++ b/net/rxrpc/input.c
@@ -608,36 +608,57 @@ unlock:
 }
 
 /*
- * Process a requested ACK.
+ * See if there's a cached RTT probe to complete.
  */
-static void rxrpc_input_requested_ack(struct rxrpc_call *call,
-				      ktime_t resp_time,
-				      rxrpc_serial_t orig_serial,
-				      rxrpc_serial_t ack_serial)
+static void rxrpc_complete_rtt_probe(struct rxrpc_call *call,
+				     ktime_t resp_time,
+				     rxrpc_serial_t acked_serial,
+				     rxrpc_serial_t ack_serial,
+				     enum rxrpc_rtt_rx_trace type)
 {
-	struct rxrpc_skb_priv *sp;
-	struct sk_buff *skb;
+	rxrpc_serial_t orig_serial;
+	unsigned long avail;
 	ktime_t sent_at;
-	int ix;
+	bool matched = false;
+	int i;
 
-	for (ix = 0; ix < RXRPC_RXTX_BUFF_SIZE; ix++) {
-		skb = call->rxtx_buffer[ix];
-		if (!skb)
-			continue;
+	avail = READ_ONCE(call->rtt_avail);
+	smp_rmb(); /* Read avail bits before accessing data. */
 
-		sent_at = skb->tstamp;
-		smp_rmb(); /* Read timestamp before serial. */
-		sp = rxrpc_skb(skb);
-		if (sp->hdr.serial != orig_serial)
+	for (i = 0; i < ARRAY_SIZE(call->rtt_serial); i++) {
+		if (!test_bit(i + RXRPC_CALL_RTT_PEND_SHIFT, &avail))
 			continue;
-		goto found;
-	}
 
-	return;
+		sent_at = call->rtt_sent_at[i];
+		orig_serial = call->rtt_serial[i];
+
+		if (orig_serial == acked_serial) {
+			clear_bit(i + RXRPC_CALL_RTT_PEND_SHIFT, &call->rtt_avail);
+			smp_mb(); /* Read data before setting avail bit */
+			set_bit(i, &call->rtt_avail);
+			if (type != rxrpc_rtt_rx_cancel)
+				rxrpc_peer_add_rtt(call, type, i, acked_serial, ack_serial,
+						   sent_at, resp_time);
+			else
+				trace_rxrpc_rtt_rx(call, rxrpc_rtt_rx_cancel, i,
+						   orig_serial, acked_serial, 0, 0);
+			matched = true;
+		}
+
+		/* If a later serial is being acked, then mark this slot as
+		 * being available.
+		 */
+		if (after(acked_serial, orig_serial)) {
+			trace_rxrpc_rtt_rx(call, rxrpc_rtt_rx_obsolete, i,
+					   orig_serial, acked_serial, 0, 0);
+			clear_bit(i + RXRPC_CALL_RTT_PEND_SHIFT, &call->rtt_avail);
+			smp_wmb();
+			set_bit(i, &call->rtt_avail);
+		}
+	}
 
-found:
-	rxrpc_peer_add_rtt(call, rxrpc_rtt_rx_requested_ack,
-			   orig_serial, ack_serial, sent_at, resp_time);
+	if (!matched)
+		trace_rxrpc_rtt_rx(call, rxrpc_rtt_rx_lost, 9, 0, acked_serial, 0, 0);
 }
 
 /*
@@ -682,27 +703,11 @@ static void rxrpc_input_check_for_lost_ack(struct rxrpc_call *call)
  */
 static void rxrpc_input_ping_response(struct rxrpc_call *call,
 				      ktime_t resp_time,
-				      rxrpc_serial_t orig_serial,
+				      rxrpc_serial_t acked_serial,
 				      rxrpc_serial_t ack_serial)
 {
-	rxrpc_serial_t ping_serial;
-	ktime_t ping_time;
-
-	ping_time = call->ping_time;
-	smp_rmb();
-	ping_serial = READ_ONCE(call->ping_serial);
-
-	if (orig_serial == call->acks_lost_ping)
+	if (acked_serial == call->acks_lost_ping)
 		rxrpc_input_check_for_lost_ack(call);
-
-	if (before(orig_serial, ping_serial) ||
-	    !test_and_clear_bit(RXRPC_CALL_PINGING, &call->flags))
-		return;
-	if (after(orig_serial, ping_serial))
-		return;
-
-	rxrpc_peer_add_rtt(call, rxrpc_rtt_rx_ping_response,
-			   orig_serial, ack_serial, ping_time, resp_time);
 }
 
 /*
@@ -869,12 +874,23 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb)
 			   first_soft_ack, prev_pkt,
 			   summary.ack_reason, nr_acks);
 
-	if (buf.ack.reason == RXRPC_ACK_PING_RESPONSE)
+	switch (buf.ack.reason) {
+	case RXRPC_ACK_PING_RESPONSE:
 		rxrpc_input_ping_response(call, skb->tstamp, acked_serial,
 					  ack_serial);
-	if (buf.ack.reason == RXRPC_ACK_REQUESTED)
-		rxrpc_input_requested_ack(call, skb->tstamp, acked_serial,
-					  ack_serial);
+		rxrpc_complete_rtt_probe(call, skb->tstamp, acked_serial, ack_serial,
+					 rxrpc_rtt_rx_ping_response);
+		break;
+	case RXRPC_ACK_REQUESTED:
+		rxrpc_complete_rtt_probe(call, skb->tstamp, acked_serial, ack_serial,
+					 rxrpc_rtt_rx_requested_ack);
+		break;
+	default:
+		if (acked_serial != 0)
+			rxrpc_complete_rtt_probe(call, skb->tstamp, acked_serial, ack_serial,
+						 rxrpc_rtt_rx_cancel);
+		break;
+	}
 
 	if (buf.ack.reason == RXRPC_ACK_PING) {
 		_proto("Rx ACK %%%u PING Request", ack_serial);
diff --git a/net/rxrpc/output.c b/net/rxrpc/output.c
index 1ba43c3df4adb..3cfff7922ba82 100644
--- a/net/rxrpc/output.c
+++ b/net/rxrpc/output.c
@@ -123,6 +123,49 @@ static size_t rxrpc_fill_out_ack(struct rxrpc_connection *conn,
 	return top - hard_ack + 3;
 }
 
+/*
+ * Record the beginning of an RTT probe.
+ */
+static int rxrpc_begin_rtt_probe(struct rxrpc_call *call, rxrpc_serial_t serial,
+				 enum rxrpc_rtt_tx_trace why)
+{
+	unsigned long avail = call->rtt_avail;
+	int rtt_slot = 9;
+
+	if (!(avail & RXRPC_CALL_RTT_AVAIL_MASK))
+		goto no_slot;
+
+	rtt_slot = __ffs(avail & RXRPC_CALL_RTT_AVAIL_MASK);
+	if (!test_and_clear_bit(rtt_slot, &call->rtt_avail))
+		goto no_slot;
+
+	call->rtt_serial[rtt_slot] = serial;
+	call->rtt_sent_at[rtt_slot] = ktime_get_real();
+	smp_wmb(); /* Write data before avail bit */
+	set_bit(rtt_slot + RXRPC_CALL_RTT_PEND_SHIFT, &call->rtt_avail);
+
+	trace_rxrpc_rtt_tx(call, why, rtt_slot, serial);
+	return rtt_slot;
+
+no_slot:
+	trace_rxrpc_rtt_tx(call, rxrpc_rtt_tx_no_slot, rtt_slot, serial);
+	return -1;
+}
+
+/*
+ * Cancel an RTT probe.
+ */
+static void rxrpc_cancel_rtt_probe(struct rxrpc_call *call,
+				   rxrpc_serial_t serial, int rtt_slot)
+{
+	if (rtt_slot != -1) {
+		clear_bit(rtt_slot + RXRPC_CALL_RTT_PEND_SHIFT, &call->rtt_avail);
+		smp_wmb(); /* Clear pending bit before setting slot */
+		set_bit(rtt_slot, &call->rtt_avail);
+		trace_rxrpc_rtt_tx(call, rxrpc_rtt_tx_cancel, rtt_slot, serial);
+	}
+}
+
 /*
  * Send an ACK call packet.
  */
@@ -136,7 +179,7 @@ int rxrpc_send_ack_packet(struct rxrpc_call *call, bool ping,
 	rxrpc_serial_t serial;
 	rxrpc_seq_t hard_ack, top;
 	size_t len, n;
-	int ret;
+	int ret, rtt_slot = -1;
 	u8 reason;
 
 	if (test_bit(RXRPC_CALL_DISCONNECTED, &call->flags))
@@ -196,18 +239,8 @@ int rxrpc_send_ack_packet(struct rxrpc_call *call, bool ping,
 	if (_serial)
 		*_serial = serial;
 
-	if (ping) {
-		call->ping_serial = serial;
-		smp_wmb();
-		/* We need to stick a time in before we send the packet in case
-		 * the reply gets back before kernel_sendmsg() completes - but
-		 * asking UDP to send the packet can take a relatively long
-		 * time.
-		 */
-		call->ping_time = ktime_get_real();
-		set_bit(RXRPC_CALL_PINGING, &call->flags);
-		trace_rxrpc_rtt_tx(call, rxrpc_rtt_tx_ping, serial);
-	}
+	if (ping)
+		rtt_slot = rxrpc_begin_rtt_probe(call, serial, rxrpc_rtt_tx_ping);
 
 	ret = kernel_sendmsg(conn->params.local->socket, &msg, iov, 2, len);
 	conn->params.peer->last_tx_at = ktime_get_seconds();
@@ -221,8 +254,7 @@ int rxrpc_send_ack_packet(struct rxrpc_call *call, bool ping,
 
 	if (call->state < RXRPC_CALL_COMPLETE) {
 		if (ret < 0) {
-			if (ping)
-				clear_bit(RXRPC_CALL_PINGING, &call->flags);
+			rxrpc_cancel_rtt_probe(call, serial, rtt_slot);
 			rxrpc_propose_ACK(call, pkt->ack.reason,
 					  ntohl(pkt->ack.serial),
 					  false, true,
@@ -321,7 +353,7 @@ int rxrpc_send_data_packet(struct rxrpc_call *call, struct sk_buff *skb,
 	struct kvec iov[2];
 	rxrpc_serial_t serial;
 	size_t len;
-	int ret;
+	int ret, rtt_slot = -1;
 
 	_enter(",{%d}", skb->len);
 
@@ -397,6 +429,8 @@ int rxrpc_send_data_packet(struct rxrpc_call *call, struct sk_buff *skb,
 	sp->hdr.serial = serial;
 	smp_wmb(); /* Set serial before timestamp */
 	skb->tstamp = ktime_get_real();
+	if (whdr.flags & RXRPC_REQUEST_ACK)
+		rtt_slot = rxrpc_begin_rtt_probe(call, serial, rxrpc_rtt_tx_data);
 
 	/* send the packet by UDP
 	 * - returns -EMSGSIZE if UDP would have to fragment the packet
@@ -408,12 +442,15 @@ int rxrpc_send_data_packet(struct rxrpc_call *call, struct sk_buff *skb,
 	conn->params.peer->last_tx_at = ktime_get_seconds();
 
 	up_read(&conn->params.local->defrag_sem);
-	if (ret < 0)
+	if (ret < 0) {
+		rxrpc_cancel_rtt_probe(call, serial, rtt_slot);
 		trace_rxrpc_tx_fail(call->debug_id, serial, ret,
 				    rxrpc_tx_point_call_data_nofrag);
-	else
+	} else {
 		trace_rxrpc_tx_packet(call->debug_id, &whdr,
 				      rxrpc_tx_point_call_data_nofrag);
+	}
+
 	rxrpc_tx_backoff(call, ret);
 	if (ret == -EMSGSIZE)
 		goto send_fragmentable;
@@ -422,7 +459,6 @@ done:
 	if (ret >= 0) {
 		if (whdr.flags & RXRPC_REQUEST_ACK) {
 			call->peer->rtt_last_req = skb->tstamp;
-			trace_rxrpc_rtt_tx(call, rxrpc_rtt_tx_data, serial);
 			if (call->peer->rtt_count > 1) {
 				unsigned long nowj = jiffies, ack_lost_at;
 
@@ -469,6 +505,8 @@ send_fragmentable:
 	sp->hdr.serial = serial;
 	smp_wmb(); /* Set serial before timestamp */
 	skb->tstamp = ktime_get_real();
+	if (whdr.flags & RXRPC_REQUEST_ACK)
+		rtt_slot = rxrpc_begin_rtt_probe(call, serial, rxrpc_rtt_tx_data);
 
 	switch (conn->params.local->srx.transport.family) {
 	case AF_INET6:
@@ -487,12 +525,14 @@ send_fragmentable:
 		BUG();
 	}
 
-	if (ret < 0)
+	if (ret < 0) {
+		rxrpc_cancel_rtt_probe(call, serial, rtt_slot);
 		trace_rxrpc_tx_fail(call->debug_id, serial, ret,
 				    rxrpc_tx_point_call_data_frag);
-	else
+	} else {
 		trace_rxrpc_tx_packet(call->debug_id, &whdr,
 				      rxrpc_tx_point_call_data_frag);
+	}
 	rxrpc_tx_backoff(call, ret);
 
 	up_write(&conn->params.local->defrag_sem);
diff --git a/net/rxrpc/rtt.c b/net/rxrpc/rtt.c
index 928d8b34a3eee..1221b0637a7ec 100644
--- a/net/rxrpc/rtt.c
+++ b/net/rxrpc/rtt.c
@@ -146,6 +146,7 @@ static void rxrpc_ack_update_rtt(struct rxrpc_peer *peer, long rtt_us)
  * exclusive access to the peer RTT data.
  */
 void rxrpc_peer_add_rtt(struct rxrpc_call *call, enum rxrpc_rtt_rx_trace why,
+			int rtt_slot,
 			rxrpc_serial_t send_serial, rxrpc_serial_t resp_serial,
 			ktime_t send_time, ktime_t resp_time)
 {
@@ -162,7 +163,7 @@ void rxrpc_peer_add_rtt(struct rxrpc_call *call, enum rxrpc_rtt_rx_trace why,
 		peer->rtt_count++;
 	spin_unlock(&peer->rtt_input_lock);
 
-	trace_rxrpc_rtt_rx(call, why, send_serial, resp_serial,
+	trace_rxrpc_rtt_rx(call, why, rtt_slot, send_serial, resp_serial,
 			   peer->srtt_us >> 3, peer->rto_j);
 }
 
-- 
2.25.1




  parent reply	other threads:[~2020-09-08 19:14 UTC|newest]

Thread overview: 198+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-08 15:22 [PATCH 5.8 000/186] 5.8.8-rc1 review Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 001/186] hwmon: (pmbus/isl68137) remove READ_TEMPERATURE_1 telemetry for RAA228228 Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 002/186] HID: quirks: Always poll three more Lenovo PixArt mice Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 003/186] drm/msm/dpu: Fix reservation failures in modeset Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 004/186] drm/msm/dpu: Fix scale params in plane validation Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 005/186] drm/msm/dpu: fix unitialized variable error Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 006/186] tty: serial: qcom_geni_serial: Drop __init from qcom_geni_console_setup Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 007/186] drm/msm: add shutdown support for display platform_driver Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 008/186] hwmon: (applesmc) check status earlier Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 009/186] nvmet: Disable keep-alive timer when kato is cleared to 0h Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 010/186] drm/msm: enable vblank during atomic commits Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 011/186] habanalabs: unmap PCI bars upon iATU failure Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 012/186] habanalabs: validate packet id during CB parse Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 013/186] habanalabs: set clock gating according to mask Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 014/186] habanalabs: proper handling of alloc size in coresight Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 015/186] habanalabs: set max power according to card type Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 016/186] habanalabs: validate FW file size Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 017/186] habanalabs: check correct vmalloc return code Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 018/186] drm/msm/a6xx: fix gmu start on newer firmware Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 019/186] gfs2: add some much needed cleanup for log flushes that fail Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 020/186] hv_utils: return error if host timesysnc update is stale Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 021/186] hv_utils: drain the timesync packets on onchannelcallback Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 022/186] ceph: dont allow setlease on cephfs Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 023/186] i2c: iproc: Fix shifting 31 bits Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 024/186] drm/omap: fix incorrect lock state Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 025/186] irqchip/ingenic: Leave parent IRQ unmasked on suspend Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 026/186] cpuidle: Fixup IRQ state Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 027/186] nbd: restore default timeout when setting it to zero Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 028/186] s390: dont trace preemption in percpu macros Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 029/186] drm/amd/display: should check error using DC_OK Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 030/186] drm/amd/display: Reject overlay plane configurations in multi-display scenarios Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 031/186] drivers: gpu: amd: Initialize amdgpu_dm_backlight_caps object to 0 in amdgpu_dm_update_backlight_caps Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 032/186] drm/amd/display: Revert HDCP disable sequence change Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 033/186] drm/amd/display: Fix passive dongle mistaken as active dongle in EDID emulation Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 034/186] drm/amd/display: Keep current gain when ABM disable immediately Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 035/186] drm/amd/display: Retry AUX write when fail occurs Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 036/186] drm/amd/display: Fix memleak in amdgpu_dm_mode_config_init Greg Kroah-Hartman
2020-09-08 15:22 ` [PATCH 5.8 037/186] xen/xenbus: Fix granting of vmallocd memory Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 038/186] fsldma: fix very broken 32-bit ppc ioread64 functionality Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 039/186] dmaengine: of-dma: Fix of_dma_router_xlates of_dma_xlate handling Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 040/186] batman-adv: Avoid uninitialized chaddr when handling DHCP Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 041/186] batman-adv: Fix own OGM check in aggregated OGMs Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 042/186] batman-adv: bla: use netif_rx_ni when not in interrupt context Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 043/186] dmaengine: at_hdmac: check return value of of_find_device_by_node() in at_dma_xlate() Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 044/186] dmaengine: at_hdmac: add missing put_device() call " Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 045/186] dmaengine: at_hdmac: add missing kfree() " Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 046/186] rxrpc: Keep the ACK serial in a var in rxrpc_input_ack() Greg Kroah-Hartman
2020-09-08 15:23 ` Greg Kroah-Hartman [this message]
2020-09-08 15:23 ` [PATCH 5.8 048/186] rxrpc: Make rxrpc_kernel_get_srtt() indicate validity Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 049/186] MIPS: mm: BMIPS5000 has inclusive physical caches Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 050/186] MIPS: BMIPS: Also call bmips_cpu_setup() for secondary cores Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 051/186] mmc: sdhci-acpi: Fix HS400 tuning for AMDI0040 Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 052/186] perf sched timehist: Fix use of CPU list with summary option Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 053/186] perf top: Skip side-band event setup if HAVE_LIBBPF_SUPPORT is not set Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 054/186] netfilter: nf_tables: add NFTA_SET_USERDATA if not null Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 055/186] netfilter: nf_tables: incorrect enum nft_list_attributes definition Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 056/186] netfilter: nf_tables: fix destination register zeroing Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 057/186] net: hns: Fix memleak in hns_nic_dev_probe Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 058/186] net: systemport: Fix memleak in bcm_sysport_probe Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 059/186] ravb: Fixed to be able to unload modules Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 060/186] net: arc_emac: Fix memleak in arc_mdio_probe Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 061/186] bpf: Fix a buffer out-of-bound access when filling raw_tp link_info Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 062/186] dmaengine: pl330: Fix burst length if burst size is smaller than bus width Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 063/186] dmaengine: ti: k3-udma: Fix the TR initialization for prep_slave_sg Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 064/186] gtp: add GTPA_LINK info to msg sent to userspace Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 065/186] net: ethernet: ti: cpsw: fix clean up of vlan mc entries for host port Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 066/186] net: ethernet: ti: cpsw_new: " Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 067/186] bnxt_en: Dont query FW when netif_running() is false Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 068/186] bnxt_en: Check for zero dir entries in NVRAM Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 069/186] bnxt_en: Fix ethtool -S statitics with XDP or TCs enabled Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 070/186] bnxt_en: Fix PCI AER error recovery flow Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 071/186] bnxt_en: Fix possible crash in bnxt_fw_reset_task() Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 072/186] bnxt_en: fix HWRM error when querying VF temperature Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 073/186] xfs: finish dfops on every insert range shift iteration Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 074/186] xfs: fix boundary test in xfs_attr_shortform_verify Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 075/186] bnxt: dont enable NAPI until rings are ready Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 076/186] media: vicodec: add missing v4l2_ctrl_request_hdl_put() Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 077/186] media: cedrus: Add " Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 078/186] net: ethernet: ti: cpsw_new: fix error handling in cpsw_ndo_vlan_rx_kill_vid() Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 079/186] media: i2c: imx214: select V4L2_FWNODE Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 080/186] selftests/bpf: Fix massive output from test_maps Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 081/186] net: dsa: mt7530: fix advertising unsupported 1000baseT_Half Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 082/186] netfilter: nfnetlink: nfnetlink_unicast() reports EAGAIN instead of ENOBUFS Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 083/186] nvmet-fc: Fix a missed _irqsave version of spin_lock in nvmet_fc_fod_op_done() Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 084/186] nvme: fix controller instance leak Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 085/186] netfilter: conntrack: do not auto-delete clash entries on reply Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 086/186] opp: Dont drop reference for an OPP table that was never parsed Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 087/186] cxgb4: fix thermal zone device registration Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 088/186] net: ethernet: ti: am65-cpsw: fix rmii 100Mbit link mode Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 089/186] MIPS: perf: Fix wrong check condition of Loongson event IDs Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 090/186] block: fix locking in bdev_del_partition Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 091/186] perf top/report: Fix infinite loop in the TUI for grouped events Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 092/186] perf cs-etm: Fix corrupt data after perf inject from Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 093/186] perf intel-pt: " Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 094/186] perf tools: Correct SNOOPX field offset Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 095/186] net: ethernet: mlx4: Fix memory allocation in mlx4_buddy_init() Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 096/186] fix regression in "epoll: Keep a reference on files added to the check list" Greg Kroah-Hartman
2020-09-08 15:23 ` [PATCH 5.8 097/186] net: bcmgenet: fix mask check in bcmgenet_validate_flow() Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 098/186] net: gemini: Fix another missing clk_disable_unprepare() in probe Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 099/186] nfp: flower: fix ABI mismatch between driver and firmware Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 100/186] net: dp83867: Fix WoL SecureOn password Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 101/186] drm/radeon: Prefer lower feedback dividers Greg Kroah-Hartman
2020-09-09 11:15   ` Christian König
2020-09-09 11:24     ` Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 102/186] MIPS: add missing MSACSR and upper MSA initialization Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 103/186] MIPS: SNI: Fix SCSI interrupt Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 104/186] xfs: fix xfs_bmap_validate_extent_raw when checking attr fork of rt files Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 105/186] perf jevents: Fix suspicious code in fixregex() Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 106/186] perf stat: Turn off summary for interval mode by default Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 107/186] perf bench: The do_run_multi_threaded() function must use IS_ERR(perf_session__new()) Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 108/186] tg3: Fix soft lockup when tg3_reset_task() fails Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 109/186] x86, fakenuma: Fix invalid starting node ID Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 110/186] iommu/vt-d: Serialize IOMMU GCMD register modifications Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 111/186] thermal: ti-soc-thermal: Fix bogus thermal shutdowns for omap4430 Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 112/186] thermal: qcom-spmi-temp-alarm: Dont suppress negative temp Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 113/186] iommu/amd: Restore IRTE.RemapEn bit after programming IRTE Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 114/186] iommu/amd: Use cmpxchg_double() when updating 128-bit IRTE Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 115/186] net/packet: fix overflow in tpacket_rcv Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 116/186] include/linux/log2.h: add missing () around n in roundup_pow_of_two() Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 117/186] iommu/vt-d: Handle 36bit addressing for x86-32 Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 118/186] tracing/kprobes, x86/ptrace: Fix regs argument order for i386 Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 119/186] x86/entry: Fix AC assertion Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 120/186] x86/debug: Allow a single level of #DB recursion Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 121/186] ext2: dont update mtime on COW faults Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 122/186] xfs: " Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 123/186] ARC: perf: dont bail setup if pct irq missing in device-tree Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 124/186] arc: fix memory initialization for systems with two memory banks Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 125/186] btrfs: drop path before adding new uuid tree entry Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 126/186] btrfs: fix potential deadlock in the search ioctl Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 127/186] btrfs: allocate scrub workqueues outside of locks Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 128/186] btrfs: set the correct lockdep class for new nodes Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 129/186] btrfs: set the lockdep class for log tree extent buffers Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 130/186] btrfs: block-group: fix free-space bitmap threshold Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 131/186] btrfs: tree-checker: fix the error message for transid error Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 132/186] Bluetooth: Return NOTIFY_DONE for hci_suspend_notifier Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 133/186] x86/mm/32: Bring back vmalloc faulting on x86_32 Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 134/186] Revert "ALSA: hda: Add support for Loongson 7A1000 controller" Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 135/186] ALSA: ca0106: fix error code handling Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 136/186] ALSA: usb-audio: Add basic capture support for Pioneer DJ DJM-250MK2 Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 137/186] ALSA: usb-audio: Add implicit feedback quirk for UR22C Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 138/186] ALSA: pcm: oss: Remove superfluous WARN_ON() for mulaw sanity check Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 139/186] ALSA: hda/hdmi: always check pin power status in i915 pin fixup Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 140/186] ALSA: firewire-digi00x: exclude Avid Adrenaline from detection Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 141/186] ALSA: hda - Fix silent audio output and corrupted input on MSI X570-A PRO Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 142/186] ALSA; firewire-tascam: exclude Tascam FE-8 from detection Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 143/186] ALSA: hda/realtek: Add quirk for Samsung Galaxy Book Ion NT950XCJ-X716A Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 144/186] ALSA: hda/realtek - Improved routing for Thinkpad X1 7th/8th Gen Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 145/186] arm64: dts: mt7622: add reset node for mmc device Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 146/186] mmc: mediatek: add optional module reset property Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 147/186] mmc: dt-bindings: Add resets/reset-names for Mediatek MMC bindings Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 148/186] mmc: sdhci-pci: Fix SDHCI_RESET_ALL for CQHCI for Intel GLK-based controllers Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 149/186] media: rc: do not access device via sysfs after rc_unregister_device() Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 150/186] media: rc: uevent sysfs file races with rc_unregister_device() Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 151/186] affs: fix basic permission bits to actually work Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 152/186] block: allow for_each_bvec to support zero len bvec Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 153/186] block: ensure bdi->io_pages is always initialized Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 154/186] io_uring: set table->files[i] to NULL when io_sqe_file_register failed Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 155/186] io_uring: fix removing the wrong file in __io_sqe_files_update() Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 156/186] s390: fix GENERIC_LOCKBREAK dependency typo in Kconfig Greg Kroah-Hartman
2020-09-08 15:24 ` [PATCH 5.8 157/186] libata: implement ATA_HORKAGE_MAX_TRIM_128M and apply to Sandisks Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 158/186] mips/oprofile: Fix fallthrough placement Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 159/186] blk-iocost: ioc_pd_free() shouldnt assume irq disabled Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 160/186] blk-stat: make q->stats->lock irqsafe Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 161/186] dmaengine: dw-edma: Fix scatter-gather address calculation Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 162/186] drm/i915: Fix sha_text population code Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 163/186] drm/amd/pm: avoid false alarm due to confusing softwareshutdowntemp setting Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 164/186] drm/amdgpu: Specify get_argument function for ci_smu_funcs Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 165/186] dm writecache: handle DAX to partitions on persistent memory correctly Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 166/186] dm mpath: fix racey management of PG initialization Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 167/186] dm integrity: fix error reporting in bitmap mode after creation Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 168/186] dm crypt: Initialize crypto wait structures Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 169/186] dm cache metadata: Avoid returning cmd->bm wild pointer on error Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 170/186] dm thin " Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 171/186] dm thin metadata: Fix use-after-free in dm_bm_set_read_only Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 172/186] mm: slub: fix conversion of freelist_corrupted() Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 173/186] mm: track page table modifications in __apply_to_page_range() Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 174/186] mm: madvise: fix vma user-after-free Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 175/186] mm/rmap: fixup copying of soft dirty and uffd ptes Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 176/186] io_uring: no read/write-retry on -EAGAIN error and O_NONBLOCK marked file Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 177/186] perf record: Correct the help info of option "--no-bpf-event" Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 178/186] kconfig: streamline_config.pl: check defined(ENV variable) before using it Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 179/186] sdhci: tegra: Add missing TMCLK for data timeout Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 180/186] checkpatch: fix the usage of capture group ( ... ) Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 181/186] mm/migrate: fixup setting UFFD_WP flag Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 182/186] mm/hugetlb: try preferred node first when alloc gigantic page from cma Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 183/186] mm/hugetlb: fix a race between hugetlb sysctl handlers Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 184/186] mm/khugepaged.c: fix khugepageds request size in collapse_file Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 185/186] cfg80211: regulatory: reject invalid hints Greg Kroah-Hartman
2020-09-08 15:25 ` [PATCH 5.8 186/186] net: usb: Fix uninit-was-stored issue in asix_read_phy_addr() Greg Kroah-Hartman
2020-09-09  1:39 ` [PATCH 5.8 000/186] 5.8.8-rc1 review Shuah Khan
2020-09-09 18:00   ` Greg Kroah-Hartman
2020-09-09  5:48 ` Naresh Kamboju
2020-09-09 18:00   ` Greg Kroah-Hartman
2020-09-09 16:47 ` Guenter Roeck
2020-09-09 18:01   ` Greg Kroah-Hartman
2020-09-09 18:22     ` Guenter Roeck
2020-09-10  6:36       ` Geert Uytterhoeven
2020-09-10 13:47         ` Guenter Roeck

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=20200908152243.944972190@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=dhowells@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --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).