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.15 173/204] netfilter: nft_set_rbtree: Switch to node list walk for overlap detection
Date: Mon, 30 Jan 2023 14:52:18 +0100 [thread overview]
Message-ID: <20230130134324.177843996@linuxfoundation.org> (raw)
In-Reply-To: <20230130134316.327556078@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 7325bee7d144..217225e13faf 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;
@@ -215,154 +215,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
next prev parent reply other threads:[~2023-01-30 14:19 UTC|newest]
Thread overview: 215+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-30 13:49 [PATCH 5.15 000/204] 5.15.91-rc1 review Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 001/204] memory: tegra: Remove clients SID override programming Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 002/204] memory: atmel-sdramc: Fix missing clk_disable_unprepare in atmel_ramc_probe() Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 003/204] memory: mvebu-devbus: Fix missing clk_disable_unprepare in mvebu_devbus_probe() Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 004/204] dmaengine: ti: k3-udma: Do conditional decrement of UDMA_CHAN_RT_PEER_BCNT_REG Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 005/204] arm64: dts: imx8mp-phycore-som: Remove invalid PMIC property Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 006/204] ARM: dts: imx6ul-pico-dwarf: Use clock-frequency Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 007/204] ARM: dts: imx7d-pico: " Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 008/204] ARM: dts: imx6qdl-gw560x: Remove incorrect uart-has-rtscts Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 009/204] arm64: dts: imx8mm-beacon: Fix ecspi2 pinmux Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 010/204] ARM: imx: add missing of_node_put() Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 011/204] HID: intel_ish-hid: Add check for ishtp_dma_tx_map Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 012/204] arm64: dts: imx8mm-venice-gw7901: fix USB2 controller OC polarity Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 013/204] soc: imx8m: Fix incorrect check for of_clk_get_by_name() Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 014/204] reset: uniphier-glue: Use reset_control_bulk API Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 015/204] reset: uniphier-glue: Fix possible null-ptr-deref Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 016/204] EDAC/highbank: Fix memory leak in highbank_mc_probe() Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 017/204] firmware: arm_scmi: Harden shared memory access in fetch_response Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 018/204] firmware: arm_scmi: Harden shared memory access in fetch_notification Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 019/204] tomoyo: fix broken dependency on *.conf.default Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 020/204] RDMA/core: Fix ib block iterator counter overflow Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 021/204] IB/hfi1: Reject a zero-length user expected buffer Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 022/204] IB/hfi1: Reserve user expected TIDs Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 023/204] IB/hfi1: Fix expected receive setup error exit issues Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 024/204] IB/hfi1: Immediately remove invalid memory from hardware Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 025/204] IB/hfi1: Remove user expected buffer invalidate race Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 026/204] affs: initialize fsdata in affs_truncate() Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 027/204] PM: AVS: qcom-cpr: Fix an error handling path in cpr_probe() Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 028/204] arm64: dts: qcom: msm8992: Dont use sfpb mutex Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 029/204] arm64: dts: qcom: msm8992-libra: Add CPU regulators Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 030/204] arm64: dts: qcom: msm8992-libra: Fix the memory map Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 031/204] phy: ti: fix Kconfig warning and operator precedence Greg Kroah-Hartman
2023-01-30 13:49 ` Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 032/204] NFSD: fix use-after-free in nfsd4_ssc_setup_dul() Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 033/204] ARM: dts: at91: sam9x60: fix the ddr clock for sam9x60 Greg Kroah-Hartman
2023-01-30 13:49 ` [PATCH 5.15 034/204] amd-xgbe: TX Flow Ctrl Registers are h/w ver dependent Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 035/204] amd-xgbe: Delay AN timeout during KR training Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 036/204] bpf: Fix pointer-leak due to insufficient speculative store bypass mitigation Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 037/204] phy: rockchip-inno-usb2: Fix missing clk_disable_unprepare() in rockchip_usb2phy_power_on() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 038/204] net: nfc: Fix use-after-free in local_cleanup() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 039/204] net: wan: Add checks for NULL for utdm in undo_uhdlc_init and unmap_si_regs Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 040/204] net: enetc: avoid deadlock in enetc_tx_onestep_tstamp() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 041/204] sch_htb: Avoid grafting on htb_destroy_class_offload when destroying htb Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 042/204] gpio: use raw spinlock for gpio chip shadowed data Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 043/204] gpio: mxc: Protect GPIO irqchip RMW with bgpio spinlock Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 044/204] gpio: mxc: Always set GPIOs used as interrupt source to INPUT mode Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 045/204] wifi: rndis_wlan: Prevent buffer overflow in rndis_query_oid Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 046/204] pinctrl/rockchip: Use temporary variable for struct device Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 047/204] pinctrl/rockchip: add error handling for pull/drive register getters Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 048/204] pinctrl: rockchip: fix reading pull type on rk3568 Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 049/204] net: stmmac: Fix queue statistics reading Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 050/204] net/sched: sch_taprio: fix possible use-after-free Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 051/204] l2tp: Serialize access to sk_user_data with sk_callback_lock Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 052/204] l2tp: Dont sleep and disable BH under writer-side sk_callback_lock Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 053/204] l2tp: convert l2tp_tunnel_list to idr Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 054/204] l2tp: close all race conditions in l2tp_tunnel_register() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 055/204] octeontx2-pf: Avoid use of GFP_KERNEL in atomic context Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 056/204] net: usb: sr9700: Handle negative len Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 057/204] net: mdio: validate parameter addr in mdiobus_get_phy() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 058/204] HID: check empty report_list in hid_validate_values() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 059/204] HID: check empty report_list in bigben_probe() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 060/204] net: stmmac: fix invalid call to mdiobus_get_phy() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 061/204] pinctrl: rockchip: fix mux route data for rk3568 Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 062/204] HID: revert CHERRY_MOUSE_000C quirk Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 063/204] usb: gadget: f_fs: Prevent race during ffs_ep0_queue_wait Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 064/204] usb: gadget: f_fs: Ensure ep0req is dequeued before free_request Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 065/204] Bluetooth: Fix possible deadlock in rfcomm_sk_state_change Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 066/204] net: ipa: disable ipa interrupt during suspend Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 067/204] net/mlx5: E-switch, Fix setting of reserved fields on MODIFY_SCHEDULING_ELEMENT Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 068/204] net: mlx5: eliminate anonymous module_init & module_exit Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 069/204] drm/panfrost: fix GENERIC_ATOMIC64 dependency Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 070/204] dmaengine: Fix double increment of client_count in dma_chan_get() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 071/204] net: macb: fix PTP TX timestamp failure due to packet padding Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 072/204] virtio-net: correctly enable callback during start_xmit Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 073/204] l2tp: prevent lockdep issue in l2tp_tunnel_register() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 074/204] HID: betop: check shape of output reports Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 075/204] cifs: fix potential deadlock in cache_refresh_path() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 076/204] dmaengine: xilinx_dma: call of_node_put() when breaking out of for_each_child_of_node() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 077/204] phy: phy-can-transceiver: Skip warning if no "max-bitrate" Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 078/204] drm/amd/display: fix issues with driver unload Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 079/204] nvme-pci: fix timeout request state check Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 080/204] tcp: avoid the lookup process failing to get sk in ehash table Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 081/204] octeontx2-pf: Fix the use of GFP_KERNEL in atomic context on rt Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 082/204] ptdma: pt_core_execute_cmd() should use spinlock Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 083/204] device property: fix of node refcount leak in fwnode_graph_get_next_endpoint() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 084/204] w1: fix deadloop in __w1_remove_master_device() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 085/204] w1: fix WARNING after calling w1_process() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 086/204] driver core: Fix test_async_probe_init saves device in wrong array Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 087/204] selftests/net: toeplitz: fix race on tpacket_v3 block close Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 088/204] net: dsa: microchip: ksz9477: port map correction in ALU table entry register Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 089/204] thermal/core: Remove duplicate information when an error occurs Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 090/204] thermal/core: Rename trips to num_trips Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 091/204] thermal: Validate new state in cur_state_store() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 092/204] thermal/core: fix error code in __thermal_cooling_device_register() Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 093/204] thermal: core: call put_device() only after device_register() fails Greg Kroah-Hartman
2023-01-30 13:50 ` [PATCH 5.15 094/204] net: stmmac: enable all safety features by default Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 095/204] tcp: fix rate_app_limited to default to 1 Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 096/204] scsi: iscsi: Fix multiple iSCSI session unbind events sent to userspace Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 097/204] cpufreq: Add Tegra234 to cpufreq-dt-platdev blocklist Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 098/204] kcsan: test: dont put the expect array on the stack Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 099/204] cpufreq: Add SM6375 to cpufreq-dt-platdev blocklist Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 100/204] ASoC: fsl_micfil: Correct the number of steps on SX controls Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 101/204] net: usb: cdc_ether: add support for Thales Cinterion PLS62-W modem Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 102/204] drm: Add orientation quirk for Lenovo ideapad D330-10IGL Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 103/204] s390/debug: add _ASM_S390_ prefix to header guard Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 104/204] s390: expicitly align _edata and _end symbols on page boundary Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 105/204] perf/x86/msr: Add Emerald Rapids Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 106/204] perf/x86/intel/uncore: " Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 107/204] cpufreq: armada-37xx: stop using 0 as NULL pointer Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 108/204] ASoC: fsl_ssi: Rename AC97 streams to avoid collisions with AC97 CODEC Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 109/204] ASoC: fsl-asoc-card: Fix naming of AC97 CODEC widgets Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 110/204] spi: spidev: remove debug messages that access spidev->spi without locking Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 111/204] KVM: s390: interrupt: use READ_ONCE() before cmpxchg() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 112/204] 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:51 ` [PATCH 5.15 113/204] r8152: add vendor/device ID pair for Microsoft Devkit Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 114/204] platform/x86: touchscreen_dmi: Add info for the CSL Panther Tab HD Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 115/204] platform/x86: asus-nb-wmi: Add alternate mapping for KEY_SCREENLOCK Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 116/204] lockref: stop doing cpu_relax in the cmpxchg loop Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 117/204] firmware: coreboot: Check size of table entry and use flex-array Greg Kroah-Hartman
2023-01-30 13:51 ` [Intel-gfx] [PATCH 5.15 118/204] drm/i915: Allow switching away via vga-switcheroo if uninitialized Greg Kroah-Hartman
2023-01-30 13:51 ` Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 119/204] Revert "selftests/bpf: check null propagation only neither reg is PTR_TO_BTF_ID" Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 120/204] drm/i915: Remove unused variable Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 121/204] x86: ACPI: cstate: Optimize C3 entry on AMD CPUs Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 122/204] fs: reiserfs: remove useless new_opts in reiserfs_remount Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 123/204] sysctl: add a new register_sysctl_init() interface Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 124/204] kernel/panic: move panic sysctls to its own file Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 125/204] panic: unset panic_on_warn inside panic() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 126/204] ubsan: no need to unset panic_on_warn in ubsan_epilogue() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 127/204] kasan: no need to unset panic_on_warn in end_report() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 128/204] exit: Add and use make_task_dead Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 129/204] objtool: Add a missing comma to avoid string concatenation Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 130/204] hexagon: Fix function name in die() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 131/204] h8300: Fix build errors from do_exit() to make_task_dead() transition Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 132/204] csky: Fix function name in csky_alignment() and die() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 133/204] ia64: make IA64_MCA_RECOVERY bool instead of tristate Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 134/204] panic: Separate sysctl logic from CONFIG_SMP Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 135/204] exit: Put an upper limit on how often we can oops Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 136/204] exit: Expose "oops_count" to sysfs Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 137/204] exit: Allow oops_limit to be disabled Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 138/204] panic: Consolidate open-coded panic_on_warn checks Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 139/204] panic: Introduce warn_limit Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 140/204] panic: Expose "warn_count" to sysfs Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 141/204] docs: Fix path paste-o for /sys/kernel/warn_count Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 142/204] exit: Use READ_ONCE() for all oops/warn limit reads Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 143/204] Bluetooth: hci_sync: cancel cmd_timer if hci_open failed Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 144/204] drm/amdgpu: complete gfxoff allow signal during suspend without delay Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 145/204] scsi: hpsa: Fix allocation size for scsi_host_alloc() Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 146/204] KVM: SVM: fix tsc scaling cache logic Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 147/204] module: Dont wait for GOING modules Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 148/204] tracing: Make sure trace_printk() can output as soon as it can be used Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 149/204] trace_events_hist: add check for return value of create_hist_field Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 150/204] ftrace/scripts: Update the instructions for ftrace-bisect.sh Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 151/204] cifs: Fix oops due to uncleared server->smbd_conn in reconnect Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 152/204] i2c: mv64xxx: Remove shutdown method from driver Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 153/204] i2c: mv64xxx: Add atomic_xfer method to driver Greg Kroah-Hartman
2023-01-30 13:51 ` [PATCH 5.15 154/204] ksmbd: add smbd max io size parameter Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 155/204] ksmbd: add max connections parameter Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 156/204] ksmbd: do not sign response to session request for guest login Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 157/204] ksmbd: downgrade ndr version error message to debug Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 158/204] ksmbd: limit pdu length size according to connection status Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 159/204] ovl: fail on invalid uid/gid mapping at copy up Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 160/204] KVM: x86/vmx: Do not skip segment attributes if unusable bit is set Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 161/204] KVM: arm64: GICv4.1: Fix race with doorbell on VPE activation/deactivation Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 162/204] thermal: intel: int340x: Protect trip temperature from concurrent updates Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 163/204] ipv6: fix reachability confirmation with proxy_ndp Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 164/204] ARM: 9280/1: mm: fix warning on phys_addr_t to void pointer assignment Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 165/204] EDAC/device: Respect any driver-supplied workqueue polling value Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 166/204] 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.15 167/204] net: mana: Fix IRQ name - add PCI and queue number Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 168/204] scsi: ufs: core: Fix devfreq deadlocks Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 169/204] i2c: designware: use casting of u64 in clock multiplication to avoid overflow Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 170/204] netlink: prevent potential spectre v1 gadgets Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 171/204] net: fix UaF in netns ops registration error path Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 172/204] drm/i915/selftest: fix intel_selftest_modify_policy argument types Greg Kroah-Hartman
2023-01-30 13:52 ` Greg Kroah-Hartman [this message]
2023-01-30 13:52 ` [PATCH 5.15 174/204] netfilter: nft_set_rbtree: skip elements in transaction from garbage collection Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 175/204] netlink: annotate data races around nlk->portid Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 176/204] netlink: annotate data races around dst_portid and dst_group Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 177/204] netlink: annotate data races around sk_state Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 178/204] ipv4: prevent potential spectre v1 gadget in ip_metrics_convert() Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 179/204] ipv4: prevent potential spectre v1 gadget in fib_metrics_match() Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 180/204] netfilter: conntrack: fix vtag checks for ABORT/SHUTDOWN_COMPLETE Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 181/204] netfilter: conntrack: fix bug in for_each_sctp_chunk Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 182/204] netrom: Fix use-after-free of a listening socket Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 183/204] net/sched: sch_taprio: do not schedule in taprio_reset() Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 184/204] sctp: fail if no bound addresses can be used for a given scope Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 185/204] riscv/kprobe: Fix instruction simulation of JALR Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 186/204] nvme: fix passthrough csi check Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 187/204] gpio: mxc: Unlock on error path in mxc_flip_edge() Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 188/204] ravb: Rename "no_ptp_cfg_active" and "ptp_cfg_active" variables Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 189/204] net: ravb: Fix lack of register setting after system resumed for Gen3 Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 190/204] net: ravb: Fix possible hang if RIS2_QFF1 happen Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 191/204] net: mctp: mark socks as dead on unhash, prevent re-add Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 192/204] thermal: intel: int340x: Add locking to int340x_thermal_get_trip_type() Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 193/204] net/tg3: resolve deadlock in tg3_reset_task() during EEH Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 194/204] net: mdio-mux-meson-g12a: force internal PHY off on mux switch Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 195/204] treewide: fix up files incorrectly marked executable Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 196/204] tools: gpio: fix -c option of gpio-event-mon Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 197/204] Revert "Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI mode" Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 198/204] cpufreq: Move to_gov_attr_set() to cpufreq.h Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 199/204] cpufreq: governor: Use kobject release() method to free dbs_data Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 200/204] kbuild: Allow kernel installation packaging to override pkg-config Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 201/204] block: fix and cleanup bio_check_ro Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 202/204] x86/i8259: Mark legacy PIC interrupts with IRQ_LEVEL Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 203/204] netfilter: conntrack: unify established states for SCTP paths Greg Kroah-Hartman
2023-01-30 13:52 ` [PATCH 5.15 204/204] perf/x86/amd: fix potential integer overflow on shift of a int Greg Kroah-Hartman
2023-01-30 19:09 ` [PATCH 5.15 000/204] 5.15.91-rc1 review Florian Fainelli
2023-01-30 21:08 ` Shuah Khan
2023-01-31 3:12 ` Guenter Roeck
2023-01-31 3:22 ` Bagas Sanjaya
2023-01-31 7:12 ` Naresh Kamboju
2023-01-31 11:47 ` Sudip Mukherjee
2023-01-31 13:41 ` Jon Hunter
2023-01-31 17:12 ` 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=20230130134324.177843996@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.