stable.vger.kernel.org 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, Stefano Brivio <sbrivio@redhat.com>,
	Pablo Neira Ayuso <pablo@netfilter.org>,
	Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.10 118/143] netfilter: nft_set_rbtree: Switch to node list walk for overlap detection
Date: Mon, 30 Jan 2023 14:52:55 +0100	[thread overview]
Message-ID: <20230130134311.716879452@linuxfoundation.org> (raw)
In-Reply-To: <20230130134306.862721518@linuxfoundation.org>

From: Pablo Neira Ayuso <pablo@netfilter.org>

[ Upstream commit c9e6978e2725a7d4b6cd23b2facd3f11422c0643 ]

...instead of a tree descent, which became overly complicated in an
attempt to cover cases where expired or inactive elements would affect
comparisons with the new element being inserted.

Further, it turned out that it's probably impossible to cover all those
cases, as inactive nodes might entirely hide subtrees consisting of a
complete interval plus a node that makes the current insertion not
overlap.

To speed up the overlap check, descent the tree to find a greater
element that is closer to the key value to insert. Then walk down the
node list for overlap detection. Starting the overlap check from
rb_first() unconditionally is slow, it takes 10 times longer due to the
full linear traversal of the list.

Moreover, perform garbage collection of expired elements when walking
down the node list to avoid bogus overlap reports.

For the insertion operation itself, this essentially reverts back to the
implementation before commit 7c84d41416d8 ("netfilter: nft_set_rbtree:
Detect partial overlaps on insertion"), except that cases of complete
overlap are already handled in the overlap detection phase itself, which
slightly simplifies the loop to find the insertion point.

Based on initial patch from Stefano Brivio, including text from the
original patch description too.

Fixes: 7c84d41416d8 ("netfilter: nft_set_rbtree: Detect partial overlaps on insertion")
Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/netfilter/nft_set_rbtree.c | 316 ++++++++++++++++++++-------------
 1 file changed, 189 insertions(+), 127 deletions(-)

diff --git a/net/netfilter/nft_set_rbtree.c b/net/netfilter/nft_set_rbtree.c
index 94a5446c5eae..81c747008da3 100644
--- a/net/netfilter/nft_set_rbtree.c
+++ b/net/netfilter/nft_set_rbtree.c
@@ -38,10 +38,12 @@ static bool nft_rbtree_interval_start(const struct nft_rbtree_elem *rbe)
 	return !nft_rbtree_interval_end(rbe);
 }
 
-static bool nft_rbtree_equal(const struct nft_set *set, const void *this,
-			     const struct nft_rbtree_elem *interval)
+static int nft_rbtree_cmp(const struct nft_set *set,
+			  const struct nft_rbtree_elem *e1,
+			  const struct nft_rbtree_elem *e2)
 {
-	return memcmp(this, nft_set_ext_key(&interval->ext), set->klen) == 0;
+	return memcmp(nft_set_ext_key(&e1->ext), nft_set_ext_key(&e2->ext),
+		      set->klen);
 }
 
 static bool __nft_rbtree_lookup(const struct net *net, const struct nft_set *set,
@@ -52,7 +54,6 @@ static bool __nft_rbtree_lookup(const struct net *net, const struct nft_set *set
 	const struct nft_rbtree_elem *rbe, *interval = NULL;
 	u8 genmask = nft_genmask_cur(net);
 	const struct rb_node *parent;
-	const void *this;
 	int d;
 
 	parent = rcu_dereference_raw(priv->root.rb_node);
@@ -62,12 +63,11 @@ static bool __nft_rbtree_lookup(const struct net *net, const struct nft_set *set
 
 		rbe = rb_entry(parent, struct nft_rbtree_elem, node);
 
-		this = nft_set_ext_key(&rbe->ext);
-		d = memcmp(this, key, set->klen);
+		d = memcmp(nft_set_ext_key(&rbe->ext), key, set->klen);
 		if (d < 0) {
 			parent = rcu_dereference_raw(parent->rb_left);
 			if (interval &&
-			    nft_rbtree_equal(set, this, interval) &&
+			    !nft_rbtree_cmp(set, rbe, interval) &&
 			    nft_rbtree_interval_end(rbe) &&
 			    nft_rbtree_interval_start(interval))
 				continue;
@@ -214,154 +214,216 @@ static void *nft_rbtree_get(const struct net *net, const struct nft_set *set,
 	return rbe;
 }
 
+static int nft_rbtree_gc_elem(const struct nft_set *__set,
+			      struct nft_rbtree *priv,
+			      struct nft_rbtree_elem *rbe)
+{
+	struct nft_set *set = (struct nft_set *)__set;
+	struct rb_node *prev = rb_prev(&rbe->node);
+	struct nft_rbtree_elem *rbe_prev;
+	struct nft_set_gc_batch *gcb;
+
+	gcb = nft_set_gc_batch_check(set, NULL, GFP_ATOMIC);
+	if (!gcb)
+		return -ENOMEM;
+
+	/* search for expired end interval coming before this element. */
+	do {
+		rbe_prev = rb_entry(prev, struct nft_rbtree_elem, node);
+		if (nft_rbtree_interval_end(rbe_prev))
+			break;
+
+		prev = rb_prev(prev);
+	} while (prev != NULL);
+
+	rb_erase(&rbe_prev->node, &priv->root);
+	rb_erase(&rbe->node, &priv->root);
+	atomic_sub(2, &set->nelems);
+
+	nft_set_gc_batch_add(gcb, rbe);
+	nft_set_gc_batch_complete(gcb);
+
+	return 0;
+}
+
+static bool nft_rbtree_update_first(const struct nft_set *set,
+				    struct nft_rbtree_elem *rbe,
+				    struct rb_node *first)
+{
+	struct nft_rbtree_elem *first_elem;
+
+	first_elem = rb_entry(first, struct nft_rbtree_elem, node);
+	/* this element is closest to where the new element is to be inserted:
+	 * update the first element for the node list path.
+	 */
+	if (nft_rbtree_cmp(set, rbe, first_elem) < 0)
+		return true;
+
+	return false;
+}
+
 static int __nft_rbtree_insert(const struct net *net, const struct nft_set *set,
 			       struct nft_rbtree_elem *new,
 			       struct nft_set_ext **ext)
 {
-	bool overlap = false, dup_end_left = false, dup_end_right = false;
+	struct nft_rbtree_elem *rbe, *rbe_le = NULL, *rbe_ge = NULL;
+	struct rb_node *node, *parent, **p, *first = NULL;
 	struct nft_rbtree *priv = nft_set_priv(set);
 	u8 genmask = nft_genmask_next(net);
-	struct nft_rbtree_elem *rbe;
-	struct rb_node *parent, **p;
-	int d;
+	int d, err;
 
-	/* Detect overlaps as we descend the tree. Set the flag in these cases:
-	 *
-	 * a1. _ _ __>|  ?_ _ __|  (insert end before existing end)
-	 * a2. _ _ ___|  ?_ _ _>|  (insert end after existing end)
-	 * a3. _ _ ___? >|_ _ __|  (insert start before existing end)
-	 *
-	 * and clear it later on, as we eventually reach the points indicated by
-	 * '?' above, in the cases described below. We'll always meet these
-	 * later, locally, due to tree ordering, and overlaps for the intervals
-	 * that are the closest together are always evaluated last.
-	 *
-	 * b1. _ _ __>|  !_ _ __|  (insert end before existing start)
-	 * b2. _ _ ___|  !_ _ _>|  (insert end after existing start)
-	 * b3. _ _ ___! >|_ _ __|  (insert start after existing end, as a leaf)
-	 *            '--' no nodes falling in this range
-	 * b4.          >|_ _   !  (insert start before existing start)
-	 *
-	 * Case a3. resolves to b3.:
-	 * - if the inserted start element is the leftmost, because the '0'
-	 *   element in the tree serves as end element
-	 * - otherwise, if an existing end is found immediately to the left. If
-	 *   there are existing nodes in between, we need to further descend the
-	 *   tree before we can conclude the new start isn't causing an overlap
-	 *
-	 * or to b4., which, preceded by a3., means we already traversed one or
-	 * more existing intervals entirely, from the right.
-	 *
-	 * For a new, rightmost pair of elements, we'll hit cases b3. and b2.,
-	 * in that order.
-	 *
-	 * The flag is also cleared in two special cases:
-	 *
-	 * b5. |__ _ _!|<_ _ _   (insert start right before existing end)
-	 * b6. |__ _ >|!__ _ _   (insert end right after existing start)
-	 *
-	 * which always happen as last step and imply that no further
-	 * overlapping is possible.
-	 *
-	 * Another special case comes from the fact that start elements matching
-	 * an already existing start element are allowed: insertion is not
-	 * performed but we return -EEXIST in that case, and the error will be
-	 * cleared by the caller if NLM_F_EXCL is not present in the request.
-	 * This way, request for insertion of an exact overlap isn't reported as
-	 * error to userspace if not desired.
-	 *
-	 * However, if the existing start matches a pre-existing start, but the
-	 * end element doesn't match the corresponding pre-existing end element,
-	 * we need to report a partial overlap. This is a local condition that
-	 * can be noticed without need for a tracking flag, by checking for a
-	 * local duplicated end for a corresponding start, from left and right,
-	 * separately.
+	/* Descend the tree to search for an existing element greater than the
+	 * key value to insert that is greater than the new element. This is the
+	 * first element to walk the ordered elements to find possible overlap.
 	 */
-
 	parent = NULL;
 	p = &priv->root.rb_node;
 	while (*p != NULL) {
 		parent = *p;
 		rbe = rb_entry(parent, struct nft_rbtree_elem, node);
-		d = memcmp(nft_set_ext_key(&rbe->ext),
-			   nft_set_ext_key(&new->ext),
-			   set->klen);
+		d = nft_rbtree_cmp(set, rbe, new);
+
 		if (d < 0) {
 			p = &parent->rb_left;
-
-			if (nft_rbtree_interval_start(new)) {
-				if (nft_rbtree_interval_end(rbe) &&
-				    nft_set_elem_active(&rbe->ext, genmask) &&
-				    !nft_set_elem_expired(&rbe->ext) && !*p)
-					overlap = false;
-			} else {
-				if (dup_end_left && !*p)
-					return -ENOTEMPTY;
-
-				overlap = nft_rbtree_interval_end(rbe) &&
-					  nft_set_elem_active(&rbe->ext,
-							      genmask) &&
-					  !nft_set_elem_expired(&rbe->ext);
-
-				if (overlap) {
-					dup_end_right = true;
-					continue;
-				}
-			}
 		} else if (d > 0) {
-			p = &parent->rb_right;
+			if (!first ||
+			    nft_rbtree_update_first(set, rbe, first))
+				first = &rbe->node;
 
-			if (nft_rbtree_interval_end(new)) {
-				if (dup_end_right && !*p)
-					return -ENOTEMPTY;
-
-				overlap = nft_rbtree_interval_end(rbe) &&
-					  nft_set_elem_active(&rbe->ext,
-							      genmask) &&
-					  !nft_set_elem_expired(&rbe->ext);
-
-				if (overlap) {
-					dup_end_left = true;
-					continue;
-				}
-			} else if (nft_set_elem_active(&rbe->ext, genmask) &&
-				   !nft_set_elem_expired(&rbe->ext)) {
-				overlap = nft_rbtree_interval_end(rbe);
-			}
+			p = &parent->rb_right;
 		} else {
-			if (nft_rbtree_interval_end(rbe) &&
-			    nft_rbtree_interval_start(new)) {
+			if (nft_rbtree_interval_end(rbe))
 				p = &parent->rb_left;
-
-				if (nft_set_elem_active(&rbe->ext, genmask) &&
-				    !nft_set_elem_expired(&rbe->ext))
-					overlap = false;
-			} else if (nft_rbtree_interval_start(rbe) &&
-				   nft_rbtree_interval_end(new)) {
+			else
 				p = &parent->rb_right;
+		}
+	}
+
+	if (!first)
+		first = rb_first(&priv->root);
+
+	/* Detect overlap by going through the list of valid tree nodes.
+	 * Values stored in the tree are in reversed order, starting from
+	 * highest to lowest value.
+	 */
+	for (node = first; node != NULL; node = rb_next(node)) {
+		rbe = rb_entry(node, struct nft_rbtree_elem, node);
+
+		if (!nft_set_elem_active(&rbe->ext, genmask))
+			continue;
 
-				if (nft_set_elem_active(&rbe->ext, genmask) &&
-				    !nft_set_elem_expired(&rbe->ext))
-					overlap = false;
-			} else if (nft_set_elem_active(&rbe->ext, genmask) &&
-				   !nft_set_elem_expired(&rbe->ext)) {
-				*ext = &rbe->ext;
-				return -EEXIST;
-			} else {
-				overlap = false;
-				if (nft_rbtree_interval_end(rbe))
-					p = &parent->rb_left;
-				else
-					p = &parent->rb_right;
+		/* perform garbage collection to avoid bogus overlap reports. */
+		if (nft_set_elem_expired(&rbe->ext)) {
+			err = nft_rbtree_gc_elem(set, priv, rbe);
+			if (err < 0)
+				return err;
+
+			continue;
+		}
+
+		d = nft_rbtree_cmp(set, rbe, new);
+		if (d == 0) {
+			/* Matching end element: no need to look for an
+			 * overlapping greater or equal element.
+			 */
+			if (nft_rbtree_interval_end(rbe)) {
+				rbe_le = rbe;
+				break;
+			}
+
+			/* first element that is greater or equal to key value. */
+			if (!rbe_ge) {
+				rbe_ge = rbe;
+				continue;
+			}
+
+			/* this is a closer more or equal element, update it. */
+			if (nft_rbtree_cmp(set, rbe_ge, new) != 0) {
+				rbe_ge = rbe;
+				continue;
 			}
+
+			/* element is equal to key value, make sure flags are
+			 * the same, an existing more or equal start element
+			 * must not be replaced by more or equal end element.
+			 */
+			if ((nft_rbtree_interval_start(new) &&
+			     nft_rbtree_interval_start(rbe_ge)) ||
+			    (nft_rbtree_interval_end(new) &&
+			     nft_rbtree_interval_end(rbe_ge))) {
+				rbe_ge = rbe;
+				continue;
+			}
+		} else if (d > 0) {
+			/* annotate element greater than the new element. */
+			rbe_ge = rbe;
+			continue;
+		} else if (d < 0) {
+			/* annotate element less than the new element. */
+			rbe_le = rbe;
+			break;
 		}
+	}
 
-		dup_end_left = dup_end_right = false;
+	/* - new start element matching existing start element: full overlap
+	 *   reported as -EEXIST, cleared by caller if NLM_F_EXCL is not given.
+	 */
+	if (rbe_ge && !nft_rbtree_cmp(set, new, rbe_ge) &&
+	    nft_rbtree_interval_start(rbe_ge) == nft_rbtree_interval_start(new)) {
+		*ext = &rbe_ge->ext;
+		return -EEXIST;
+	}
+
+	/* - new end element matching existing end element: full overlap
+	 *   reported as -EEXIST, cleared by caller if NLM_F_EXCL is not given.
+	 */
+	if (rbe_le && !nft_rbtree_cmp(set, new, rbe_le) &&
+	    nft_rbtree_interval_end(rbe_le) == nft_rbtree_interval_end(new)) {
+		*ext = &rbe_le->ext;
+		return -EEXIST;
 	}
 
-	if (overlap)
+	/* - new start element with existing closest, less or equal key value
+	 *   being a start element: partial overlap, reported as -ENOTEMPTY.
+	 *   Anonymous sets allow for two consecutive start element since they
+	 *   are constant, skip them to avoid bogus overlap reports.
+	 */
+	if (!nft_set_is_anonymous(set) && rbe_le &&
+	    nft_rbtree_interval_start(rbe_le) && nft_rbtree_interval_start(new))
+		return -ENOTEMPTY;
+
+	/* - new end element with existing closest, less or equal key value
+	 *   being a end element: partial overlap, reported as -ENOTEMPTY.
+	 */
+	if (rbe_le &&
+	    nft_rbtree_interval_end(rbe_le) && nft_rbtree_interval_end(new))
 		return -ENOTEMPTY;
 
+	/* - new end element with existing closest, greater or equal key value
+	 *   being an end element: partial overlap, reported as -ENOTEMPTY
+	 */
+	if (rbe_ge &&
+	    nft_rbtree_interval_end(rbe_ge) && nft_rbtree_interval_end(new))
+		return -ENOTEMPTY;
+
+	/* Accepted element: pick insertion point depending on key value */
+	parent = NULL;
+	p = &priv->root.rb_node;
+	while (*p != NULL) {
+		parent = *p;
+		rbe = rb_entry(parent, struct nft_rbtree_elem, node);
+		d = nft_rbtree_cmp(set, rbe, new);
+
+		if (d < 0)
+			p = &parent->rb_left;
+		else if (d > 0)
+			p = &parent->rb_right;
+		else if (nft_rbtree_interval_end(rbe))
+			p = &parent->rb_left;
+		else
+			p = &parent->rb_right;
+	}
+
 	rb_link_node_rcu(&new->node, parent, p);
 	rb_insert_color(&new->node, &priv->root);
 	return 0;
-- 
2.39.0




  parent reply	other threads:[~2023-01-30 14:28 UTC|newest]

Thread overview: 151+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-30 13:50 [PATCH 5.10 000/143] 5.10.166-rc1 review Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.10 001/143] clk: generalize devm_clk_get() a bit Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.10 002/143] clk: Provide new devm_clk helpers for prepared and enabled clocks Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 003/143] memory: atmel-sdramc: Fix missing clk_disable_unprepare in atmel_ramc_probe() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 004/143] memory: mvebu-devbus: Fix missing clk_disable_unprepare in mvebu_devbus_probe() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 005/143] ARM: dts: imx6ul-pico-dwarf: Use clock-frequency Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 006/143] ARM: dts: imx7d-pico: " Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 007/143] ARM: dts: imx6qdl-gw560x: Remove incorrect uart-has-rtscts Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 008/143] arm64: dts: imx8mm-beacon: Fix ecspi2 pinmux Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 009/143] ARM: imx: add missing of_node_put() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 010/143] HID: intel_ish-hid: Add check for ishtp_dma_tx_map Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 011/143] EDAC/highbank: Fix memory leak in highbank_mc_probe() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 012/143] firmware: arm_scmi: Harden shared memory access in fetch_response Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 013/143] firmware: arm_scmi: Harden shared memory access in fetch_notification Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 014/143] tomoyo: fix broken dependency on *.conf.default Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 015/143] RDMA/core: Fix ib block iterator counter overflow Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 016/143] IB/hfi1: Reject a zero-length user expected buffer Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 017/143] IB/hfi1: Reserve user expected TIDs Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 018/143] IB/hfi1: Fix expected receive setup error exit issues Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 019/143] IB/hfi1: Immediately remove invalid memory from hardware Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 020/143] IB/hfi1: Remove user expected buffer invalidate race Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 021/143] affs: initialize fsdata in affs_truncate() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 022/143] PM: AVS: qcom-cpr: Fix an error handling path in cpr_probe() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 023/143] phy: ti: fix Kconfig warning and operator precedence Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 024/143] ARM: dts: at91: sam9x60: fix the ddr clock for sam9x60 Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 025/143] amd-xgbe: TX Flow Ctrl Registers are h/w ver dependent Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 026/143] amd-xgbe: Delay AN timeout during KR training Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 027/143] bpf: Fix pointer-leak due to insufficient speculative store bypass mitigation Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 028/143] phy: rockchip-inno-usb2: Fix missing clk_disable_unprepare() in rockchip_usb2phy_power_on() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 029/143] net: nfc: Fix use-after-free in local_cleanup() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 030/143] net: wan: Add checks for NULL for utdm in undo_uhdlc_init and unmap_si_regs Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 031/143] gpio: mxc: Always set GPIOs used as interrupt source to INPUT mode Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 032/143] wifi: rndis_wlan: Prevent buffer overflow in rndis_query_oid Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 033/143] net/sched: sch_taprio: fix possible use-after-free Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 034/143] l2tp: Serialize access to sk_user_data with sk_callback_lock Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 035/143] l2tp: Dont sleep and disable BH under writer-side sk_callback_lock Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 036/143] l2tp: convert l2tp_tunnel_list to idr Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 037/143] l2tp: close all race conditions in l2tp_tunnel_register() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 038/143] net: usb: sr9700: Handle negative len Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 039/143] net: mdio: validate parameter addr in mdiobus_get_phy() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 040/143] HID: check empty report_list in hid_validate_values() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 041/143] HID: check empty report_list in bigben_probe() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 042/143] net: stmmac: fix invalid call to mdiobus_get_phy() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 043/143] HID: revert CHERRY_MOUSE_000C quirk Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 044/143] usb: gadget: f_fs: Prevent race during ffs_ep0_queue_wait Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 045/143] usb: gadget: f_fs: Ensure ep0req is dequeued before free_request Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 046/143] net: mlx5: eliminate anonymous module_init & module_exit Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 047/143] drm/panfrost: fix GENERIC_ATOMIC64 dependency Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 048/143] dmaengine: Fix double increment of client_count in dma_chan_get() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 049/143] net: macb: fix PTP TX timestamp failure due to packet padding Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 050/143] l2tp: prevent lockdep issue in l2tp_tunnel_register() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 051/143] HID: betop: check shape of output reports Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 052/143] dmaengine: xilinx_dma: call of_node_put() when breaking out of for_each_child_of_node() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 053/143] nvme-pci: fix timeout request state check Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 054/143] tcp: avoid the lookup process failing to get sk in ehash table Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 055/143] w1: fix deadloop in __w1_remove_master_device() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 056/143] w1: fix WARNING after calling w1_process() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 057/143] driver core: Fix test_async_probe_init saves device in wrong array Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 058/143] net: dsa: microchip: ksz9477: port map correction in ALU table entry register Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 059/143] tcp: fix rate_app_limited to default to 1 Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 060/143] scsi: iscsi: Fix multiple iSCSI session unbind events sent to userspace Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 061/143] cpufreq: Add Tegra234 to cpufreq-dt-platdev blocklist Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.10 062/143] kcsan: test: dont put the expect array on the stack Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 063/143] ASoC: fsl_micfil: Correct the number of steps on SX controls Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 064/143] drm: Add orientation quirk for Lenovo ideapad D330-10IGL Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 065/143] s390/debug: add _ASM_S390_ prefix to header guard Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 066/143] cpufreq: armada-37xx: stop using 0 as NULL pointer Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 067/143] ASoC: fsl_ssi: Rename AC97 streams to avoid collisions with AC97 CODEC Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 068/143] ASoC: fsl-asoc-card: Fix naming of AC97 CODEC widgets Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 069/143] spi: spidev: remove debug messages that access spidev->spi without locking Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 070/143] KVM: s390: interrupt: use READ_ONCE() before cmpxchg() Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 071/143] scsi: hisi_sas: Set a port invalid only if there are no devices attached when refreshing port id Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 072/143] platform/x86: touchscreen_dmi: Add info for the CSL Panther Tab HD Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 073/143] platform/x86: asus-nb-wmi: Add alternate mapping for KEY_SCREENLOCK Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 074/143] lockref: stop doing cpu_relax in the cmpxchg loop Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 075/143] Revert "selftests/bpf: check null propagation only neither reg is PTR_TO_BTF_ID" Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 076/143] netfilter: conntrack: do not renew entry stuck in tcp SYN_SENT state Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 077/143] x86: ACPI: cstate: Optimize C3 entry on AMD CPUs Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 078/143] fs: reiserfs: remove useless new_opts in reiserfs_remount Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 079/143] sysctl: add a new register_sysctl_init() interface Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 080/143] kernel/panic: move panic sysctls to its own file Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 081/143] panic: unset panic_on_warn inside panic() Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 082/143] ubsan: no need to unset panic_on_warn in ubsan_epilogue() Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 083/143] kasan: no need to unset panic_on_warn in end_report() Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 084/143] exit: Add and use make_task_dead Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 085/143] objtool: Add a missing comma to avoid string concatenation Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 086/143] hexagon: Fix function name in die() Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 087/143] h8300: Fix build errors from do_exit() to make_task_dead() transition Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 088/143] csky: Fix function name in csky_alignment() and die() Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 089/143] ia64: make IA64_MCA_RECOVERY bool instead of tristate Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 090/143] panic: Separate sysctl logic from CONFIG_SMP Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 091/143] exit: Put an upper limit on how often we can oops Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 092/143] exit: Expose "oops_count" to sysfs Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 093/143] exit: Allow oops_limit to be disabled Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 094/143] panic: Consolidate open-coded panic_on_warn checks Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 095/143] panic: Introduce warn_limit Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 096/143] panic: Expose "warn_count" to sysfs Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 097/143] docs: Fix path paste-o for /sys/kernel/warn_count Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 098/143] exit: Use READ_ONCE() for all oops/warn limit reads Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 099/143] Bluetooth: hci_sync: cancel cmd_timer if hci_open failed Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 100/143] xhci: Set HCD flag to defer primary roothub registration Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 101/143] scsi: hpsa: Fix allocation size for scsi_host_alloc() Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 102/143] module: Dont wait for GOING modules Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 103/143] tracing: Make sure trace_printk() can output as soon as it can be used Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 104/143] trace_events_hist: add check for return value of create_hist_field Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 105/143] ftrace/scripts: Update the instructions for ftrace-bisect.sh Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 106/143] cifs: Fix oops due to uncleared server->smbd_conn in reconnect Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 107/143] KVM: x86/vmx: Do not skip segment attributes if unusable bit is set Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 108/143] thermal: intel: int340x: Protect trip temperature from concurrent updates Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 109/143] ARM: 9280/1: mm: fix warning on phys_addr_t to void pointer assignment Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 110/143] EDAC/device: Respect any driver-supplied workqueue polling value Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 111/143] EDAC/qcom: Do not pass llcc_driv_data as edac_device_ctl_infos pvt_info Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 112/143] units: Add Watt units Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 113/143] units: Add SI metric prefix definitions Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 114/143] i2c: designware: Use DIV_ROUND_CLOSEST() macro Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 115/143] i2c: designware: use casting of u64 in clock multiplication to avoid overflow Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 116/143] netlink: prevent potential spectre v1 gadgets Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 117/143] net: fix UaF in netns ops registration error path Greg Kroah-Hartman
2023-01-30 13:52 ` Greg Kroah-Hartman [this message]
2023-01-30 13:52 ` [PATCH 5.10 119/143] netfilter: nft_set_rbtree: skip elements in transaction from garbage collection Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 120/143] netlink: annotate data races around nlk->portid Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 121/143] netlink: annotate data races around dst_portid and dst_group Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.10 122/143] netlink: annotate data races around sk_state Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 123/143] ipv4: prevent potential spectre v1 gadget in ip_metrics_convert() Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 124/143] ipv4: prevent potential spectre v1 gadget in fib_metrics_match() Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 125/143] netfilter: conntrack: fix vtag checks for ABORT/SHUTDOWN_COMPLETE Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 126/143] netfilter: conntrack: fix bug in for_each_sctp_chunk Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 127/143] netrom: Fix use-after-free of a listening socket Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 128/143] net/sched: sch_taprio: do not schedule in taprio_reset() Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 129/143] sctp: fail if no bound addresses can be used for a given scope Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 130/143] net: ravb: Fix possible hang if RIS2_QFF1 happen Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 131/143] thermal: intel: int340x: Add locking to int340x_thermal_get_trip_type() Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 132/143] net/tg3: resolve deadlock in tg3_reset_task() during EEH Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 133/143] net: mdio-mux-meson-g12a: force internal PHY off on mux switch Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 134/143] tools: gpio: fix -c option of gpio-event-mon Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 135/143] Revert "Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI mode" Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 136/143] nouveau: explicitly wait on the fence in nouveau_bo_move_m2mf Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 137/143] nfsd: Ensure knfsd shuts down when the "nfsd" pseudofs is unmounted Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 138/143] Revert "selftests/ftrace: Update synthetic event syntax errors" Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 139/143] block: fix and cleanup bio_check_ro Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 140/143] x86/i8259: Mark legacy PIC interrupts with IRQ_LEVEL Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 141/143] netfilter: conntrack: unify established states for SCTP paths Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 142/143] perf/x86/amd: fix potential integer overflow on shift of a int Greg Kroah-Hartman
2023-01-30 13:53 ` [PATCH 5.10 143/143] clk: Fix pointer casting to prevent oops in devm_clk_release() Greg Kroah-Hartman
2023-01-30 18:37 ` [PATCH 5.10 000/143] 5.10.166-rc1 review Florian Fainelli
2023-01-30 21:09 ` Shuah Khan
2023-01-30 21:54 ` Pavel Machek
2023-01-31  3:11 ` Guenter Roeck
2023-01-31  9:45 ` Naresh Kamboju
2023-01-31 11:46 ` Sudip Mukherjee
2023-01-31 17:14 ` Allen Pais

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=20230130134311.716879452@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=pablo@netfilter.org \
    --cc=patches@lists.linux.dev \
    --cc=sashal@kernel.org \
    --cc=sbrivio@redhat.com \
    --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).