From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, Pablo Neira Ayuso <pablo@netfilter.org>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH 6.1 112/170] netfilter: nf_tables: drop map element references from preparation phase
Date: Mon, 26 Jun 2023 20:11:21 +0200 [thread overview]
Message-ID: <20230626180805.556728784@linuxfoundation.org> (raw)
In-Reply-To: <20230626180800.476539630@linuxfoundation.org>
From: Pablo Neira Ayuso <pablo@netfilter.org>
[ Upstream commit 628bd3e49cba1c066228e23d71a852c23e26da73 ]
set .destroy callback releases the references to other objects in maps.
This is very late and it results in spurious EBUSY errors. Drop refcount
from the preparation phase instead, update set backend not to drop
reference counter from set .destroy path.
Exceptions: NFT_TRANS_PREPARE_ERROR does not require to drop the
reference counter because the transaction abort path releases the map
references for each element since the set is unbound. The abort path
also deals with releasing reference counter for new elements added to
unbound sets.
Fixes: 591054469b3e ("netfilter: nf_tables: revisit chain/object refcounting from elements")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/net/netfilter/nf_tables.h | 5 +-
net/netfilter/nf_tables_api.c | 147 ++++++++++++++++++++++++++----
net/netfilter/nft_set_bitmap.c | 5 +-
net/netfilter/nft_set_hash.c | 23 ++++-
net/netfilter/nft_set_pipapo.c | 14 ++-
net/netfilter/nft_set_rbtree.c | 5 +-
6 files changed, 167 insertions(+), 32 deletions(-)
diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
index 984f7d3087735..bbcd558f19344 100644
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
@@ -467,7 +467,8 @@ struct nft_set_ops {
int (*init)(const struct nft_set *set,
const struct nft_set_desc *desc,
const struct nlattr * const nla[]);
- void (*destroy)(const struct nft_set *set);
+ void (*destroy)(const struct nft_ctx *ctx,
+ const struct nft_set *set);
void (*gc_init)(const struct nft_set *set);
unsigned int elemsize;
@@ -804,6 +805,8 @@ int nft_set_elem_expr_clone(const struct nft_ctx *ctx, struct nft_set *set,
struct nft_expr *expr_array[]);
void nft_set_elem_destroy(const struct nft_set *set, void *elem,
bool destroy_expr);
+void nf_tables_set_elem_destroy(const struct nft_ctx *ctx,
+ const struct nft_set *set, void *elem);
/**
* struct nft_set_gc_batch_head - nf_tables set garbage collection batch
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 72bb2b3977480..337bab663540a 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -561,6 +561,58 @@ static int nft_trans_set_add(const struct nft_ctx *ctx, int msg_type,
return __nft_trans_set_add(ctx, msg_type, set, NULL);
}
+static void nft_setelem_data_deactivate(const struct net *net,
+ const struct nft_set *set,
+ struct nft_set_elem *elem);
+
+static int nft_mapelem_deactivate(const struct nft_ctx *ctx,
+ struct nft_set *set,
+ const struct nft_set_iter *iter,
+ struct nft_set_elem *elem)
+{
+ nft_setelem_data_deactivate(ctx->net, set, elem);
+
+ return 0;
+}
+
+struct nft_set_elem_catchall {
+ struct list_head list;
+ struct rcu_head rcu;
+ void *elem;
+};
+
+static void nft_map_catchall_deactivate(const struct nft_ctx *ctx,
+ struct nft_set *set)
+{
+ u8 genmask = nft_genmask_next(ctx->net);
+ struct nft_set_elem_catchall *catchall;
+ struct nft_set_elem elem;
+ struct nft_set_ext *ext;
+
+ list_for_each_entry(catchall, &set->catchall_list, list) {
+ ext = nft_set_elem_ext(set, catchall->elem);
+ if (!nft_set_elem_active(ext, genmask))
+ continue;
+
+ elem.priv = catchall->elem;
+ nft_setelem_data_deactivate(ctx->net, set, &elem);
+ break;
+ }
+}
+
+static void nft_map_deactivate(const struct nft_ctx *ctx, struct nft_set *set)
+{
+ struct nft_set_iter iter = {
+ .genmask = nft_genmask_next(ctx->net),
+ .fn = nft_mapelem_deactivate,
+ };
+
+ set->ops->walk(ctx, set, &iter);
+ WARN_ON_ONCE(iter.err);
+
+ nft_map_catchall_deactivate(ctx, set);
+}
+
static int nft_delset(const struct nft_ctx *ctx, struct nft_set *set)
{
int err;
@@ -569,6 +621,9 @@ static int nft_delset(const struct nft_ctx *ctx, struct nft_set *set)
if (err < 0)
return err;
+ if (set->flags & (NFT_SET_MAP | NFT_SET_OBJECT))
+ nft_map_deactivate(ctx, set);
+
nft_deactivate_next(ctx->net, set);
ctx->table->use--;
@@ -3484,12 +3539,6 @@ int nft_setelem_validate(const struct nft_ctx *ctx, struct nft_set *set,
return 0;
}
-struct nft_set_elem_catchall {
- struct list_head list;
- struct rcu_head rcu;
- void *elem;
-};
-
int nft_set_catchall_validate(const struct nft_ctx *ctx, struct nft_set *set)
{
u8 genmask = nft_genmask_next(ctx->net);
@@ -4808,7 +4857,7 @@ static int nf_tables_newset(struct sk_buff *skb, const struct nfnl_info *info,
for (i = 0; i < set->num_exprs; i++)
nft_expr_destroy(&ctx, set->exprs[i]);
err_set_destroy:
- ops->destroy(set);
+ ops->destroy(&ctx, set);
err_set_init:
kfree(set->name);
err_set_name:
@@ -4823,7 +4872,7 @@ static void nft_set_catchall_destroy(const struct nft_ctx *ctx,
list_for_each_entry_safe(catchall, next, &set->catchall_list, list) {
list_del_rcu(&catchall->list);
- nft_set_elem_destroy(set, catchall->elem, true);
+ nf_tables_set_elem_destroy(ctx, set, catchall->elem);
kfree_rcu(catchall, rcu);
}
}
@@ -4838,7 +4887,7 @@ static void nft_set_destroy(const struct nft_ctx *ctx, struct nft_set *set)
for (i = 0; i < set->num_exprs; i++)
nft_expr_destroy(ctx, set->exprs[i]);
- set->ops->destroy(set);
+ set->ops->destroy(ctx, set);
nft_set_catchall_destroy(ctx, set);
kfree(set->name);
kvfree(set);
@@ -4999,10 +5048,60 @@ static void nf_tables_unbind_set(const struct nft_ctx *ctx, struct nft_set *set,
}
}
+static void nft_setelem_data_activate(const struct net *net,
+ const struct nft_set *set,
+ struct nft_set_elem *elem);
+
+static int nft_mapelem_activate(const struct nft_ctx *ctx,
+ struct nft_set *set,
+ const struct nft_set_iter *iter,
+ struct nft_set_elem *elem)
+{
+ nft_setelem_data_activate(ctx->net, set, elem);
+
+ return 0;
+}
+
+static void nft_map_catchall_activate(const struct nft_ctx *ctx,
+ struct nft_set *set)
+{
+ u8 genmask = nft_genmask_next(ctx->net);
+ struct nft_set_elem_catchall *catchall;
+ struct nft_set_elem elem;
+ struct nft_set_ext *ext;
+
+ list_for_each_entry(catchall, &set->catchall_list, list) {
+ ext = nft_set_elem_ext(set, catchall->elem);
+ if (!nft_set_elem_active(ext, genmask))
+ continue;
+
+ elem.priv = catchall->elem;
+ nft_setelem_data_activate(ctx->net, set, &elem);
+ break;
+ }
+}
+
+static void nft_map_activate(const struct nft_ctx *ctx, struct nft_set *set)
+{
+ struct nft_set_iter iter = {
+ .genmask = nft_genmask_next(ctx->net),
+ .fn = nft_mapelem_activate,
+ };
+
+ set->ops->walk(ctx, set, &iter);
+ WARN_ON_ONCE(iter.err);
+
+ nft_map_catchall_activate(ctx, set);
+}
+
void nf_tables_activate_set(const struct nft_ctx *ctx, struct nft_set *set)
{
- if (nft_set_is_anonymous(set))
+ if (nft_set_is_anonymous(set)) {
+ if (set->flags & (NFT_SET_MAP | NFT_SET_OBJECT))
+ nft_map_activate(ctx, set);
+
nft_clear(ctx->net, set);
+ }
set->use++;
}
@@ -5021,13 +5120,20 @@ void nf_tables_deactivate_set(const struct nft_ctx *ctx, struct nft_set *set,
set->use--;
break;
case NFT_TRANS_PREPARE:
- if (nft_set_is_anonymous(set))
- nft_deactivate_next(ctx->net, set);
+ if (nft_set_is_anonymous(set)) {
+ if (set->flags & (NFT_SET_MAP | NFT_SET_OBJECT))
+ nft_map_deactivate(ctx, set);
+ nft_deactivate_next(ctx->net, set);
+ }
set->use--;
return;
case NFT_TRANS_ABORT:
case NFT_TRANS_RELEASE:
+ if (nft_set_is_anonymous(set) &&
+ set->flags & (NFT_SET_MAP | NFT_SET_OBJECT))
+ nft_map_deactivate(ctx, set);
+
set->use--;
fallthrough;
default:
@@ -5780,6 +5886,7 @@ static void nft_set_elem_expr_destroy(const struct nft_ctx *ctx,
__nft_set_elem_expr_destroy(ctx, expr);
}
+/* Drop references and destroy. Called from gc, dynset and abort path. */
void nft_set_elem_destroy(const struct nft_set *set, void *elem,
bool destroy_expr)
{
@@ -5801,11 +5908,11 @@ void nft_set_elem_destroy(const struct nft_set *set, void *elem,
}
EXPORT_SYMBOL_GPL(nft_set_elem_destroy);
-/* Only called from commit path, nft_setelem_data_deactivate() already deals
- * with the refcounting from the preparation phase.
+/* Destroy element. References have been already dropped in the preparation
+ * path via nft_setelem_data_deactivate().
*/
-static void nf_tables_set_elem_destroy(const struct nft_ctx *ctx,
- const struct nft_set *set, void *elem)
+void nf_tables_set_elem_destroy(const struct nft_ctx *ctx,
+ const struct nft_set *set, void *elem)
{
struct nft_set_ext *ext = nft_set_elem_ext(set, elem);
@@ -6438,7 +6545,7 @@ static int nft_add_set_elem(struct nft_ctx *ctx, struct nft_set *set,
if (obj)
obj->use--;
err_elem_userdata:
- nf_tables_set_elem_destroy(ctx, set, elem.priv);
+ nft_set_elem_destroy(set, elem.priv, true);
err_parse_data:
if (nla[NFTA_SET_ELEM_DATA] != NULL)
nft_data_release(&elem.data.val, desc.type);
@@ -9482,6 +9589,9 @@ static int __nf_tables_abort(struct net *net, enum nfnl_abort_action action)
case NFT_MSG_DELSET:
trans->ctx.table->use++;
nft_clear(trans->ctx.net, nft_trans_set(trans));
+ if (nft_trans_set(trans)->flags & (NFT_SET_MAP | NFT_SET_OBJECT))
+ nft_map_activate(&trans->ctx, nft_trans_set(trans));
+
nft_trans_destroy(trans);
break;
case NFT_MSG_NEWSETELEM:
@@ -10248,6 +10358,9 @@ static void __nft_release_table(struct net *net, struct nft_table *table)
list_for_each_entry_safe(set, ns, &table->sets, list) {
list_del(&set->list);
table->use--;
+ if (set->flags & (NFT_SET_MAP | NFT_SET_OBJECT))
+ nft_map_deactivate(&ctx, set);
+
nft_set_destroy(&ctx, set);
}
list_for_each_entry_safe(obj, ne, &table->objects, list) {
diff --git a/net/netfilter/nft_set_bitmap.c b/net/netfilter/nft_set_bitmap.c
index 96081ac8d2b4c..1e5e7a181e0bc 100644
--- a/net/netfilter/nft_set_bitmap.c
+++ b/net/netfilter/nft_set_bitmap.c
@@ -271,13 +271,14 @@ static int nft_bitmap_init(const struct nft_set *set,
return 0;
}
-static void nft_bitmap_destroy(const struct nft_set *set)
+static void nft_bitmap_destroy(const struct nft_ctx *ctx,
+ const struct nft_set *set)
{
struct nft_bitmap *priv = nft_set_priv(set);
struct nft_bitmap_elem *be, *n;
list_for_each_entry_safe(be, n, &priv->list, head)
- nft_set_elem_destroy(set, be, true);
+ nf_tables_set_elem_destroy(ctx, set, be);
}
static bool nft_bitmap_estimate(const struct nft_set_desc *desc, u32 features,
diff --git a/net/netfilter/nft_set_hash.c b/net/netfilter/nft_set_hash.c
index 76de6c8d98655..0b73cb0e752f7 100644
--- a/net/netfilter/nft_set_hash.c
+++ b/net/netfilter/nft_set_hash.c
@@ -400,19 +400,31 @@ static int nft_rhash_init(const struct nft_set *set,
return 0;
}
+struct nft_rhash_ctx {
+ const struct nft_ctx ctx;
+ const struct nft_set *set;
+};
+
static void nft_rhash_elem_destroy(void *ptr, void *arg)
{
- nft_set_elem_destroy(arg, ptr, true);
+ struct nft_rhash_ctx *rhash_ctx = arg;
+
+ nf_tables_set_elem_destroy(&rhash_ctx->ctx, rhash_ctx->set, ptr);
}
-static void nft_rhash_destroy(const struct nft_set *set)
+static void nft_rhash_destroy(const struct nft_ctx *ctx,
+ const struct nft_set *set)
{
struct nft_rhash *priv = nft_set_priv(set);
+ struct nft_rhash_ctx rhash_ctx = {
+ .ctx = *ctx,
+ .set = set,
+ };
cancel_delayed_work_sync(&priv->gc_work);
rcu_barrier();
rhashtable_free_and_destroy(&priv->ht, nft_rhash_elem_destroy,
- (void *)set);
+ (void *)&rhash_ctx);
}
/* Number of buckets is stored in u32, so cap our result to 1U<<31 */
@@ -643,7 +655,8 @@ static int nft_hash_init(const struct nft_set *set,
return 0;
}
-static void nft_hash_destroy(const struct nft_set *set)
+static void nft_hash_destroy(const struct nft_ctx *ctx,
+ const struct nft_set *set)
{
struct nft_hash *priv = nft_set_priv(set);
struct nft_hash_elem *he;
@@ -653,7 +666,7 @@ static void nft_hash_destroy(const struct nft_set *set)
for (i = 0; i < priv->buckets; i++) {
hlist_for_each_entry_safe(he, next, &priv->table[i], node) {
hlist_del_rcu(&he->node);
- nft_set_elem_destroy(set, he, true);
+ nf_tables_set_elem_destroy(ctx, set, he);
}
}
}
diff --git a/net/netfilter/nft_set_pipapo.c b/net/netfilter/nft_set_pipapo.c
index 15e451dc3fc46..c867b5b772e86 100644
--- a/net/netfilter/nft_set_pipapo.c
+++ b/net/netfilter/nft_set_pipapo.c
@@ -2148,10 +2148,12 @@ static int nft_pipapo_init(const struct nft_set *set,
/**
* nft_set_pipapo_match_destroy() - Destroy elements from key mapping array
+ * @ctx: context
* @set: nftables API set representation
* @m: matching data pointing to key mapping array
*/
-static void nft_set_pipapo_match_destroy(const struct nft_set *set,
+static void nft_set_pipapo_match_destroy(const struct nft_ctx *ctx,
+ const struct nft_set *set,
struct nft_pipapo_match *m)
{
struct nft_pipapo_field *f;
@@ -2168,15 +2170,17 @@ static void nft_set_pipapo_match_destroy(const struct nft_set *set,
e = f->mt[r].e;
- nft_set_elem_destroy(set, e, true);
+ nf_tables_set_elem_destroy(ctx, set, e);
}
}
/**
* nft_pipapo_destroy() - Free private data for set and all committed elements
+ * @ctx: context
* @set: nftables API set representation
*/
-static void nft_pipapo_destroy(const struct nft_set *set)
+static void nft_pipapo_destroy(const struct nft_ctx *ctx,
+ const struct nft_set *set)
{
struct nft_pipapo *priv = nft_set_priv(set);
struct nft_pipapo_match *m;
@@ -2186,7 +2190,7 @@ static void nft_pipapo_destroy(const struct nft_set *set)
if (m) {
rcu_barrier();
- nft_set_pipapo_match_destroy(set, m);
+ nft_set_pipapo_match_destroy(ctx, set, m);
#ifdef NFT_PIPAPO_ALIGN
free_percpu(m->scratch_aligned);
@@ -2203,7 +2207,7 @@ static void nft_pipapo_destroy(const struct nft_set *set)
m = priv->clone;
if (priv->dirty)
- nft_set_pipapo_match_destroy(set, m);
+ nft_set_pipapo_match_destroy(ctx, set, m);
#ifdef NFT_PIPAPO_ALIGN
free_percpu(priv->clone->scratch_aligned);
diff --git a/net/netfilter/nft_set_rbtree.c b/net/netfilter/nft_set_rbtree.c
index 2f114aa10f1a7..5c05c9b990fba 100644
--- a/net/netfilter/nft_set_rbtree.c
+++ b/net/netfilter/nft_set_rbtree.c
@@ -664,7 +664,8 @@ static int nft_rbtree_init(const struct nft_set *set,
return 0;
}
-static void nft_rbtree_destroy(const struct nft_set *set)
+static void nft_rbtree_destroy(const struct nft_ctx *ctx,
+ const struct nft_set *set)
{
struct nft_rbtree *priv = nft_set_priv(set);
struct nft_rbtree_elem *rbe;
@@ -675,7 +676,7 @@ static void nft_rbtree_destroy(const struct nft_set *set)
while ((node = priv->root.rb_node) != NULL) {
rb_erase(node, &priv->root);
rbe = rb_entry(node, struct nft_rbtree_elem, node);
- nft_set_elem_destroy(set, rbe, true);
+ nf_tables_set_elem_destroy(ctx, set, rbe);
}
}
--
2.39.2
next prev parent reply other threads:[~2023-06-26 18:33 UTC|newest]
Thread overview: 180+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-26 18:09 [PATCH 6.1 000/170] 6.1.36-rc1 review Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 001/170] drm/amd/display: Use dc_update_planes_and_stream Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 002/170] drm/amd/display: Add wrapper to call planes and stream update Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 003/170] drm/amd/display: fix the system hang while disable PSR Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 004/170] tty: serial: fsl_lpuart: make rx_watermark configurable for different platforms Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 005/170] tty: serial: fsl_lpuart: reduce RX watermark to 0 on LS1028A Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 006/170] ata: libata-scsi: Avoid deadlock on rescan after device resume Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 007/170] mm: Fix copy_from_user_nofault() Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 008/170] tpm, tpm_tis: Claim locality in interrupt handler Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 009/170] tpm_crb: Add support for CRB devices based on Pluton Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 010/170] ksmbd: validate command payload size Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 011/170] ksmbd: fix out-of-bound read in smb2_write Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 012/170] ksmbd: validate session id and tree id in the compound request Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 013/170] tick/common: Align tick period during sched_timer setup Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 014/170] selftests: mptcp: remove duplicated entries in usage Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 015/170] selftests: mptcp: join: fix ShellCheck warnings Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 016/170] selftests: mptcp: lib: skip if missing symbol Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 017/170] selftests: mptcp: connect: skip transp tests if not supported Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 018/170] selftests: mptcp: connect: skip disconnect " Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 019/170] selftests: mptcp: pm nl: remove hardcoded default limits Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 020/170] selftests: mptcp: pm nl: skip fullmesh flag checks if not supported Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 021/170] selftests: mptcp: sockopt: relax expected returned size Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 022/170] selftests: mptcp: sockopt: skip getsockopt checks if not supported Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 023/170] selftests: mptcp: userspace pm: skip if ip tool is unavailable Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 024/170] selftests: mptcp: userspace pm: skip if not supported Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 025/170] selftests: mptcp: lib: skip if not below kernel version Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 026/170] selftests: mptcp: join: use iptables-legacy if available Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 027/170] selftests: mptcp: join: helpers to skip tests Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 028/170] selftests: mptcp: join: skip check if MIB counter not supported Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 029/170] selftests: mptcp: join: support local endpoint being tracked or not Greg Kroah-Hartman
2023-06-26 18:09 ` [PATCH 6.1 030/170] selftests: mptcp: join: skip Fastclose tests if not supported Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 031/170] selftests: mptcp: join: support RM_ADDR for used endpoints or not Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 032/170] selftests: mptcp: join: skip implicit tests if not supported Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 033/170] selftests: mptcp: join: skip backup if set flag on ID " Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 034/170] selftests: mptcp: join: skip fullmesh flag tests if " Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 035/170] selftests: mptcp: join: skip MPC backups " Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 036/170] selftests/mount_setattr: fix redefine struct mount_attr build error Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 037/170] selftests: mptcp: diag: skip listen tests if not supported Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 038/170] selftests: mptcp: sockopt: skip TCP_INQ checks " Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 039/170] selftests: mptcp: join: skip test if iptables/tc cmds fail Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 040/170] selftests: mptcp: join: skip userspace PM tests if not supported Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 041/170] selftests: mptcp: join: skip fail " Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 042/170] selftests: mptcp: join: fix "userspace pm add & remove address" Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 043/170] writeback: fix dereferencing NULL mapping->host on writeback_page_template Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 044/170] scripts: fix the gfp flags header path in gfp-translate Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 045/170] nilfs2: fix buffer corruption due to concurrent device reads Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 046/170] ACPI: sleep: Avoid breaking S3 wakeup due to might_sleep() Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 047/170] KVM: Avoid illegal stage2 mapping on invalid memory slot Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 048/170] Drivers: hv: vmbus: Call hv_synic_free() if hv_synic_alloc() fails Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 049/170] Drivers: hv: vmbus: Fix vmbus_wait_for_unload() to scan present CPUs Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 050/170] PCI: hv: Fix a race condition bug in hv_pci_query_relations() Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 051/170] Revert "PCI: hv: Fix a timing issue which causes kdump to fail occasionally" Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 052/170] PCI: hv: Remove the useless hv_pcichild_state from struct hv_pci_dev Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 053/170] PCI: hv: Fix a race condition in hv_irq_unmask() that can cause panic Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 054/170] PCI: hv: Add a per-bus mutex state_lock Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 055/170] io_uring/net: clear msg_controllen on partial sendmsg retry Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 056/170] io_uring/net: disable partial retries for recvmsg with cmsg Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 057/170] mptcp: handle correctly disconnect() failures Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 058/170] mptcp: fix possible divide by zero in recvmsg() Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 059/170] mptcp: fix possible list corruption on passive MPJ Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 060/170] mptcp: consolidate fallback and non fallback state machine Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 061/170] cgroup: Do not corrupt task iteration when rebinding subsystem Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 062/170] cgroup,freezer: hold cpu_hotplug_lock before freezer_mutex in freezer_css_{online,offline}() Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 063/170] mmc: litex_mmc: set PROBE_PREFER_ASYNCHRONOUS Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 064/170] mmc: sdhci-msm: Disable broken 64-bit DMA on MSM8916 Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 065/170] mmc: meson-gx: remove redundant mmc_request_done() call from irq context Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 066/170] mmc: mmci: stm32: fix max busy timeout calculation Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 067/170] mmc: sdhci-spear: fix deferred probing Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 068/170] mmc: bcm2835: " Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 069/170] mmc: sunxi: " Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 070/170] bpf: ensure main program has an extable Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 071/170] wifi: iwlwifi: pcie: Handle SO-F device for PCI id 0x7AF0 Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 072/170] spi: spi-geni-qcom: correctly handle -EPROBE_DEFER from dma_request_chan() Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 073/170] regulator: pca9450: Fix LDO3OUT and LDO4OUT MASK Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 074/170] regmap: spi-avmm: Fix regmap_bus max_raw_write Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 075/170] arm64: dts: rockchip: Fix rk356x PCIe register and range mappings Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 076/170] io_uring/poll: serialize poll linked timer start with poll removal Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 077/170] nilfs2: prevent general protection fault in nilfs_clear_dirty_page() Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 078/170] x86/mm: Avoid using set_pgd() outside of real PGD pages Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 079/170] memfd: check for non-NULL file_seals in memfd_create() syscall Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 080/170] mmc: meson-gx: fix deferred probing Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 081/170] ieee802154: hwsim: Fix possible memory leaks Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 082/170] xfrm: Treat already-verified secpath entries as optional Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 083/170] xfrm: interface: rename xfrm_interface.c to xfrm_interface_core.c Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 084/170] xfrm: Ensure policies always checked on XFRM-I input path Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 085/170] KVM: arm64: PMU: Restore the hosts PMUSERENR_EL0 Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 086/170] bpf: track immediate values written to stack by BPF_ST instruction Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 087/170] bpf: Fix verifier id tracking of scalars on spill Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 088/170] xfrm: fix inbound ipv4/udp/esp packets to UDPv6 dualstack sockets Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 089/170] bpf: Fix a bpf_jit_dump issue for x86_64 with sysctl bpf_jit_enable Greg Kroah-Hartman
2023-06-26 18:10 ` [PATCH 6.1 090/170] selftests: net: tls: check if FIPS mode is enabled Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 091/170] selftests: net: vrf-xfrm-tests: change authentication and encryption algos Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 092/170] selftests: net: fcnal-test: check if FIPS mode is enabled Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 093/170] xfrm: Linearize the skb after offloading if needed Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 094/170] net/mlx5: DR, Fix wrong action data allocation in decap action Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 095/170] sfc: use budget for TX completions Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 096/170] net: qca_spi: Avoid high load if QCA7000 is not available Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 097/170] mmc: mtk-sd: fix deferred probing Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 098/170] mmc: mvsdio: " Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 099/170] mmc: omap: " Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 100/170] mmc: omap_hsmmc: " Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 101/170] mmc: owl: " Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 102/170] mmc: sdhci-acpi: " Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 103/170] mmc: sh_mmcif: " Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 104/170] mmc: usdhi60rol0: " Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 105/170] ipvs: align inner_mac_header for encapsulation Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 106/170] net: dsa: mt7530: fix trapping frames on non-MT7621 SoC MT7530 switch Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 107/170] net: dsa: mt7530: fix handling of BPDUs on " Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 108/170] net: dsa: mt7530: fix handling of LLDP frames Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 109/170] be2net: Extend xmit workaround to BE3 chip Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 110/170] netfilter: nf_tables: fix chain binding transaction logic Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 111/170] netfilter: nf_tables: add NFT_TRANS_PREPARE_ERROR to deal with bound set/chain Greg Kroah-Hartman
2023-06-26 18:11 ` Greg Kroah-Hartman [this message]
2023-06-26 18:11 ` [PATCH 6.1 113/170] netfilter: nft_set_pipapo: .walk does not deal with generations Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 114/170] netfilter: nf_tables: disallow element updates of bound anonymous sets Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 115/170] netfilter: nf_tables: reject unbound anonymous set before commit phase Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 116/170] netfilter: nf_tables: reject unbound chain " Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 117/170] netfilter: nf_tables: disallow updates of anonymous sets Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 118/170] netfilter: nfnetlink_osf: fix module autoload Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 119/170] Revert "net: phy: dp83867: perform soft reset and retain established link" Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 120/170] bpf/btf: Accept function names that contain dots Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 121/170] bpf: Force kprobe multi expected_attach_type for kprobe_multi link Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 122/170] io_uring/net: use the correct msghdr union member in io_sendmsg_copy_hdr Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 123/170] selftests: forwarding: Fix race condition in mirror installation Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 124/170] platform/x86/amd/pmf: Register notify handler only if SPS is enabled Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 125/170] sch_netem: acquire qdisc lock in netem_change() Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 126/170] revert "net: align SO_RCVMARK required privileges with SO_MARK" Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 127/170] arm64: dts: rockchip: Enable GPU on SOQuartz CM4 Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 128/170] arm64: dts: rockchip: fix nEXTRST on SOQuartz Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 129/170] gpiolib: Fix GPIO chip IRQ initialization restriction Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 130/170] gpio: sifive: add missing check for platform_get_irq Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 131/170] gpiolib: Fix irq_domain resource tracking for gpiochip_irqchip_add_domain() Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 132/170] scsi: target: iscsi: Prevent login threads from racing between each other Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 133/170] HID: wacom: Add error check to wacom_parse_and_register() Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 134/170] arm64: Add missing Set/Way CMO encodings Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 135/170] smb3: missing null check in SMB2_change_notify Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 136/170] media: cec: core: disable adapter in cec_devnode_unregister Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 137/170] media: cec: core: dont set last_initiator if tx in progress Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 138/170] nfcsim.c: Fix error checking for debugfs_create_dir Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 139/170] btrfs: fix an uninitialized variable warning in btrfs_log_inode Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 140/170] usb: gadget: udc: fix NULL dereference in remove() Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 141/170] nvme: double KA polling frequency to avoid KATO with TBKAS on Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 142/170] nvme: check IO start time when deciding to defer KA Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 143/170] nvme: improve handling of long keep alives Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 144/170] Input: soc_button_array - add invalid acpi_index DMI quirk handling Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 145/170] arm64: dts: qcom: sc7280-idp: drop incorrect dai-cells from WCD938x SDW Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 146/170] arm64: dts: qcom: sc7280-qcard: " Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 147/170] s390/cio: unregister device when the only path is gone Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 148/170] spi: lpspi: disable lpspi module irq in DMA mode Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 149/170] ASoC: codecs: wcd938x-sdw: do not set can_multi_write flag Greg Kroah-Hartman
2023-06-26 18:11 ` [PATCH 6.1 150/170] ASoC: simple-card: Add missing of_node_put() in case of error Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 151/170] soundwire: dmi-quirks: add new mapping for HP Spectre x360 Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 152/170] soundwire: qcom: add proper error paths in qcom_swrm_startup() Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 153/170] ASoC: nau8824: Add quirk to active-high jack-detect Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 154/170] ASoC: amd: yc: Add Thinkpad Neo14 to quirks list for acp6x Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 155/170] gfs2: Dont get stuck writing page onto itself under direct I/O Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 156/170] s390/purgatory: disable branch profiling Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 157/170] ASoC: fsl_sai: Enable BCI bit if SAI works on synchronous mode with BYP asserted Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 158/170] ALSA: hda/realtek: Add "Intel Reference board" and "NUC 13" SSID in the ALC256 Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 159/170] i2c: mchp-pci1xxxx: Avoid cast to incompatible function type Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 160/170] ARM: dts: Fix erroneous ADS touchscreen polarities Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 161/170] null_blk: Fix: memory release when memory_backed=1 Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 162/170] drm/exynos: vidi: fix a wrong error return Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 163/170] drm/exynos: fix race condition UAF in exynos_g2d_exec_ioctl Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 164/170] drm/radeon: fix race condition UAF in radeon_gem_set_domain_ioctl Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 165/170] vhost_vdpa: tell vqs about the negotiated Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 166/170] vhost_net: revert upend_idx only on retriable error Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 167/170] KVM: arm64: Restore GICv2-on-GICv3 functionality Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 168/170] x86/apic: Fix kernel panic when booting with intremap=off and x2apic_phys Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 169/170] i2c: imx-lpi2c: fix type char overflow issue when calculating the clock cycle Greg Kroah-Hartman
2023-06-26 18:12 ` [PATCH 6.1 170/170] smb: move client and server files to common directory fs/smb Greg Kroah-Hartman
2023-06-26 21:45 ` [PATCH 6.1 000/170] 6.1.36-rc1 review ogasawara takeshi
2023-06-27 9:04 ` Jon Hunter
2023-06-27 13:38 ` Conor Dooley
2023-06-27 14:52 ` Markus Reichelt
2023-06-27 20:11 ` Chris Paterson
2023-06-27 21:01 ` Ron Economos
2023-06-27 21:33 ` Guenter Roeck
2023-06-28 6:35 ` Naresh Kamboju
2023-06-28 17:36 ` 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=20230626180805.556728784@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=pablo@netfilter.org \
--cc=patches@lists.linux.dev \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).