patches.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org, netfilter-devel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	patches@lists.linux.dev, Florian Westphal <fw@strlen.de>,
	Pablo Neira Ayuso <pablo@netfilter.org>
Subject: [PATCH 4.19 128/323] netfilter: nf_tables: use net_generic infra for transaction data
Date: Wed,  9 Aug 2023 12:39:26 +0200	[thread overview]
Message-ID: <20230809103703.976696696@linuxfoundation.org> (raw)
In-Reply-To: <20230809103658.104386911@linuxfoundation.org>

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

[ 0854db2aaef3fcdd3498a9d299c60adea2aa3dc6 ]

This moves all nf_tables pernet data from struct net to a net_generic
extension, with the exception of the gencursor.

The latter is used in the data path and also outside of the nf_tables
core. All others are only used from the configuration plane.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 include/net/netfilter/nf_tables.h |   10 +
 include/net/netns/nftables.h      |    5 
 net/netfilter/nf_tables_api.c     |  303 +++++++++++++++++++++++---------------
 net/netfilter/nft_chain_filter.c  |   11 +
 net/netfilter/nft_dynset.c        |    6 
 5 files changed, 210 insertions(+), 125 deletions(-)

--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
@@ -1409,4 +1409,14 @@ struct nft_trans_flowtable {
 int __init nft_chain_filter_init(void);
 void nft_chain_filter_fini(void);
 
+struct nftables_pernet {
+	struct list_head	tables;
+	struct list_head	commit_list;
+	struct list_head	module_list;
+	struct list_head	notify_list;
+	struct mutex		commit_mutex;
+	unsigned int		base_seq;
+	u8			validate_state;
+};
+
 #endif /* _NET_NF_TABLES_H */
--- a/include/net/netns/nftables.h
+++ b/include/net/netns/nftables.h
@@ -5,12 +5,7 @@
 #include <linux/list.h>
 
 struct netns_nftables {
-	struct list_head	tables;
-	struct list_head	commit_list;
-	struct mutex		commit_mutex;
-	unsigned int		base_seq;
 	u8			gencursor;
-	u8			validate_state;
 };
 
 #endif
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -22,10 +22,13 @@
 #include <net/netfilter/nf_tables_core.h>
 #include <net/netfilter/nf_tables.h>
 #include <net/net_namespace.h>
+#include <net/netns/generic.h>
 #include <net/sock.h>
 
 #define NFT_MODULE_AUTOLOAD_LIMIT (MODULE_NAME_LEN - sizeof("nft-expr-255-"))
 
+unsigned int nf_tables_net_id __read_mostly;
+
 static LIST_HEAD(nf_tables_expressions);
 static LIST_HEAD(nf_tables_objects);
 static LIST_HEAD(nf_tables_flowtables);
@@ -53,7 +56,9 @@ static const struct rhashtable_params nf
 
 static void nft_validate_state_update(struct net *net, u8 new_validate_state)
 {
-	switch (net->nft.validate_state) {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
+
+	switch (nft_net->validate_state) {
 	case NFT_VALIDATE_SKIP:
 		WARN_ON_ONCE(new_validate_state == NFT_VALIDATE_DO);
 		break;
@@ -64,7 +69,7 @@ static void nft_validate_state_update(st
 			return;
 	}
 
-	net->nft.validate_state = new_validate_state;
+	nft_net->validate_state = new_validate_state;
 }
 
 static void nft_ctx_init(struct nft_ctx *ctx,
@@ -117,13 +122,15 @@ static void nft_trans_destroy(struct nft
 
 static void nft_set_trans_bind(const struct nft_ctx *ctx, struct nft_set *set)
 {
+	struct nftables_pernet *nft_net;
 	struct net *net = ctx->net;
 	struct nft_trans *trans;
 
 	if (!nft_set_is_anonymous(set))
 		return;
 
-	list_for_each_entry_reverse(trans, &net->nft.commit_list, list) {
+	nft_net = net_generic(net, nf_tables_net_id);
+	list_for_each_entry_reverse(trans, &nft_net->commit_list, list) {
 		switch (trans->msg_type) {
 		case NFT_MSG_NEWSET:
 			if (nft_trans_set(trans) == set)
@@ -137,6 +144,14 @@ static void nft_set_trans_bind(const str
 	}
 }
 
+static void nft_trans_commit_list_add_tail(struct net *net, struct nft_trans *trans)
+{
+	struct nftables_pernet *nft_net;
+
+	nft_net = net_generic(net, nf_tables_net_id);
+	list_add_tail(&trans->list, &nft_net->commit_list);
+}
+
 static int nf_tables_register_hook(struct net *net,
 				   const struct nft_table *table,
 				   struct nft_chain *chain)
@@ -187,7 +202,7 @@ static int nft_trans_table_add(struct nf
 	if (msg_type == NFT_MSG_NEWTABLE)
 		nft_activate_next(ctx->net, ctx->table);
 
-	list_add_tail(&trans->list, &ctx->net->nft.commit_list);
+	nft_trans_commit_list_add_tail(ctx->net, trans);
 	return 0;
 }
 
@@ -214,7 +229,7 @@ static int nft_trans_chain_add(struct nf
 	if (msg_type == NFT_MSG_NEWCHAIN)
 		nft_activate_next(ctx->net, ctx->chain);
 
-	list_add_tail(&trans->list, &ctx->net->nft.commit_list);
+	nft_trans_commit_list_add_tail(ctx->net, trans);
 	return 0;
 }
 
@@ -287,7 +302,7 @@ static struct nft_trans *nft_trans_rule_
 			ntohl(nla_get_be32(ctx->nla[NFTA_RULE_ID]));
 	}
 	nft_trans_rule(trans) = rule;
-	list_add_tail(&trans->list, &ctx->net->nft.commit_list);
+	nft_trans_commit_list_add_tail(ctx->net, trans);
 
 	return trans;
 }
@@ -342,7 +357,7 @@ static int nft_trans_set_add(const struc
 		nft_activate_next(ctx->net, set);
 	}
 	nft_trans_set(trans) = set;
-	list_add_tail(&trans->list, &ctx->net->nft.commit_list);
+	nft_trans_commit_list_add_tail(ctx->net, trans);
 
 	return 0;
 }
@@ -374,7 +389,7 @@ static int nft_trans_obj_add(struct nft_
 		nft_activate_next(ctx->net, obj);
 
 	nft_trans_obj(trans) = obj;
-	list_add_tail(&trans->list, &ctx->net->nft.commit_list);
+	nft_trans_commit_list_add_tail(ctx->net, trans);
 
 	return 0;
 }
@@ -407,7 +422,7 @@ static int nft_trans_flowtable_add(struc
 		nft_activate_next(ctx->net, flowtable);
 
 	nft_trans_flowtable(trans) = flowtable;
-	list_add_tail(&trans->list, &ctx->net->nft.commit_list);
+	nft_trans_commit_list_add_tail(ctx->net, trans);
 
 	return 0;
 }
@@ -435,12 +450,14 @@ static struct nft_table *nft_table_looku
 					  const struct nlattr *nla,
 					  u8 family, u8 genmask)
 {
+	struct nftables_pernet *nft_net;
 	struct nft_table *table;
 
 	if (nla == NULL)
 		return ERR_PTR(-EINVAL);
 
-	list_for_each_entry_rcu(table, &net->nft.tables, list) {
+	nft_net = net_generic(net, nf_tables_net_id);
+	list_for_each_entry_rcu(table, &nft_net->tables, list) {
 		if (!nla_strcmp(nla, table->name) &&
 		    table->family == family &&
 		    nft_active_genmask(table, genmask))
@@ -454,9 +471,11 @@ static struct nft_table *nft_table_looku
 						   const struct nlattr *nla,
 						   u8 genmask)
 {
+	struct nftables_pernet *nft_net;
 	struct nft_table *table;
 
-	list_for_each_entry(table, &net->nft.tables, list) {
+	nft_net = net_generic(net, nf_tables_net_id);
+	list_for_each_entry(table, &nft_net->tables, list) {
 		if (be64_to_cpu(nla_get_be64(nla)) == table->handle &&
 		    nft_active_genmask(table, genmask))
 			return table;
@@ -509,11 +528,13 @@ __nf_tables_chain_type_lookup(const stru
 static void nft_request_module(struct net *net, const char *fmt, ...)
 {
 	char module_name[MODULE_NAME_LEN];
+	struct nftables_pernet *nft_net;
 	LIST_HEAD(commit_list);
 	va_list args;
 	int ret;
 
-	list_splice_init(&net->nft.commit_list, &commit_list);
+	nft_net = net_generic(net, nf_tables_net_id);
+	list_splice_init(&nft_net->commit_list, &commit_list);
 
 	va_start(args, fmt);
 	ret = vsnprintf(module_name, MODULE_NAME_LEN, fmt, args);
@@ -521,12 +542,12 @@ static void nft_request_module(struct ne
 	if (ret >= MODULE_NAME_LEN)
 		return;
 
-	mutex_unlock(&net->nft.commit_mutex);
+	mutex_unlock(&nft_net->commit_mutex);
 	request_module("%s", module_name);
-	mutex_lock(&net->nft.commit_mutex);
+	mutex_lock(&nft_net->commit_mutex);
 
-	WARN_ON_ONCE(!list_empty(&net->nft.commit_list));
-	list_splice(&commit_list, &net->nft.commit_list);
+	WARN_ON_ONCE(!list_empty(&nft_net->commit_list));
+	list_splice(&commit_list, &nft_net->commit_list);
 }
 #endif
 
@@ -563,7 +584,9 @@ nf_tables_chain_type_lookup(struct net *
 
 static __be16 nft_base_seq(const struct net *net)
 {
-	return htons(net->nft.base_seq & 0xffff);
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
+
+	return htons(nft_net->base_seq & 0xffff);
 }
 
 static const struct nla_policy nft_table_policy[NFTA_TABLE_MAX + 1] = {
@@ -631,15 +654,17 @@ static int nf_tables_dump_tables(struct
 				 struct netlink_callback *cb)
 {
 	const struct nfgenmsg *nfmsg = nlmsg_data(cb->nlh);
+	struct nftables_pernet *nft_net;
 	const struct nft_table *table;
 	unsigned int idx = 0, s_idx = cb->args[0];
 	struct net *net = sock_net(skb->sk);
 	int family = nfmsg->nfgen_family;
 
 	rcu_read_lock();
-	cb->seq = net->nft.base_seq;
+	nft_net = net_generic(net, nf_tables_net_id);
+	cb->seq = nft_net->base_seq;
 
-	list_for_each_entry_rcu(table, &net->nft.tables, list) {
+	list_for_each_entry_rcu(table, &nft_net->tables, list) {
 		if (family != NFPROTO_UNSPEC && family != table->family)
 			continue;
 
@@ -813,7 +838,7 @@ static int nf_tables_updtable(struct nft
 		goto err;
 
 	nft_trans_table_update(trans) = true;
-	list_add_tail(&trans->list, &ctx->net->nft.commit_list);
+	nft_trans_commit_list_add_tail(ctx->net, trans);
 	return 0;
 err:
 	nft_trans_destroy(trans);
@@ -848,6 +873,7 @@ static int nf_tables_newtable(struct net
 			      const struct nlattr * const nla[],
 			      struct netlink_ext_ack *extack)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
 	u8 genmask = nft_genmask_next(net);
 	int family = nfmsg->nfgen_family;
@@ -857,7 +883,7 @@ static int nf_tables_newtable(struct net
 	struct nft_ctx ctx;
 	int err;
 
-	lockdep_assert_held(&net->nft.commit_mutex);
+	lockdep_assert_held(&nft_net->commit_mutex);
 	attr = nla[NFTA_TABLE_NAME];
 	table = nft_table_lookup(net, attr, family, genmask);
 	if (IS_ERR(table)) {
@@ -907,7 +933,7 @@ static int nf_tables_newtable(struct net
 	if (err < 0)
 		goto err_trans;
 
-	list_add_tail_rcu(&table->list, &net->nft.tables);
+	list_add_tail_rcu(&table->list, &nft_net->tables);
 	return 0;
 err_trans:
 	rhltable_destroy(&table->chains_ht);
@@ -987,11 +1013,12 @@ out:
 
 static int nft_flush(struct nft_ctx *ctx, int family)
 {
+	struct nftables_pernet *nft_net = net_generic(ctx->net, nf_tables_net_id);
 	struct nft_table *table, *nt;
 	const struct nlattr * const *nla = ctx->nla;
 	int err = 0;
 
-	list_for_each_entry_safe(table, nt, &ctx->net->nft.tables, list) {
+	list_for_each_entry_safe(table, nt, &nft_net->tables, list) {
 		if (family != AF_UNSPEC && table->family != family)
 			continue;
 
@@ -1105,7 +1132,9 @@ nft_chain_lookup_byhandle(const struct n
 static bool lockdep_commit_lock_is_held(struct net *net)
 {
 #ifdef CONFIG_PROVE_LOCKING
-	return lockdep_is_held(&net->nft.commit_mutex);
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
+
+	return lockdep_is_held(&nft_net->commit_mutex);
 #else
 	return true;
 #endif
@@ -1302,11 +1331,13 @@ static int nf_tables_dump_chains(struct
 	unsigned int idx = 0, s_idx = cb->args[0];
 	struct net *net = sock_net(skb->sk);
 	int family = nfmsg->nfgen_family;
+	struct nftables_pernet *nft_net;
 
 	rcu_read_lock();
-	cb->seq = net->nft.base_seq;
+	nft_net = net_generic(net, nf_tables_net_id);
+	cb->seq = nft_net->base_seq;
 
-	list_for_each_entry_rcu(table, &net->nft.tables, list) {
+	list_for_each_entry_rcu(table, &nft_net->tables, list) {
 		if (family != NFPROTO_UNSPEC && family != table->family)
 			continue;
 
@@ -1499,12 +1530,13 @@ static int nft_chain_parse_hook(struct n
 				struct nft_chain_hook *hook, u8 family,
 				bool autoload)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	struct nlattr *ha[NFTA_HOOK_MAX + 1];
 	const struct nft_chain_type *type;
 	struct net_device *dev;
 	int err;
 
-	lockdep_assert_held(&net->nft.commit_mutex);
+	lockdep_assert_held(&nft_net->commit_mutex);
 	lockdep_nfnl_nft_mutex_not_held();
 
 	err = nla_parse_nested(ha, NFTA_HOOK_MAX, nla[NFTA_CHAIN_HOOK],
@@ -1773,6 +1805,7 @@ static int nf_tables_updchain(struct nft
 
 	if (nla[NFTA_CHAIN_HANDLE] &&
 	    nla[NFTA_CHAIN_NAME]) {
+		struct nftables_pernet *nft_net = net_generic(ctx->net, nf_tables_net_id);
 		struct nft_trans *tmp;
 		char *name;
 
@@ -1782,7 +1815,7 @@ static int nf_tables_updchain(struct nft
 			goto err;
 
 		err = -EEXIST;
-		list_for_each_entry(tmp, &ctx->net->nft.commit_list, list) {
+		list_for_each_entry(tmp, &nft_net->commit_list, list) {
 			if (tmp->msg_type == NFT_MSG_NEWCHAIN &&
 			    tmp->ctx.table == table &&
 			    nft_trans_chain_update(tmp) &&
@@ -1795,7 +1828,7 @@ static int nf_tables_updchain(struct nft
 
 		nft_trans_chain_name(trans) = name;
 	}
-	list_add_tail(&trans->list, &ctx->net->nft.commit_list);
+	nft_trans_commit_list_add_tail(ctx->net, trans);
 
 	return 0;
 err:
@@ -1809,6 +1842,7 @@ static int nf_tables_newchain(struct net
 			      const struct nlattr * const nla[],
 			      struct netlink_ext_ack *extack)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
 	u8 genmask = nft_genmask_next(net);
 	int family = nfmsg->nfgen_family;
@@ -1819,7 +1853,7 @@ static int nf_tables_newchain(struct net
 	struct nft_ctx ctx;
 	u64 handle = 0;
 
-	lockdep_assert_held(&net->nft.commit_mutex);
+	lockdep_assert_held(&nft_net->commit_mutex);
 
 	table = nft_table_lookup(net, nla[NFTA_CHAIN_TABLE], family, genmask);
 	if (IS_ERR(table)) {
@@ -2342,11 +2376,13 @@ static int nf_tables_dump_rules(struct s
 	unsigned int idx = 0, s_idx = cb->args[0];
 	struct net *net = sock_net(skb->sk);
 	int family = nfmsg->nfgen_family;
+	struct nftables_pernet *nft_net;
 
 	rcu_read_lock();
-	cb->seq = net->nft.base_seq;
+	nft_net = net_generic(net, nf_tables_net_id);
+	cb->seq = nft_net->base_seq;
 
-	list_for_each_entry_rcu(table, &net->nft.tables, list) {
+	list_for_each_entry_rcu(table, &nft_net->tables, list) {
 		if (family != NFPROTO_UNSPEC && family != table->family)
 			continue;
 
@@ -2499,7 +2535,6 @@ static void nf_tables_rule_destroy(const
 {
 	struct nft_expr *expr, *next;
 
-	lockdep_assert_held(&ctx->net->nft.commit_mutex);
 	/*
 	 * Careful: some expressions might not be initialized in case this
 	 * is called on error from nf_tables_newrule().
@@ -2579,6 +2614,7 @@ static int nf_tables_newrule(struct net
 			     const struct nlattr * const nla[],
 			     struct netlink_ext_ack *extack)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	const struct nfgenmsg *nfmsg = nlmsg_data(nlh);
 	u8 genmask = nft_genmask_next(net);
 	struct nft_expr_info *info = NULL;
@@ -2595,7 +2631,7 @@ static int nf_tables_newrule(struct net
 	int err, rem;
 	u64 handle, pos_handle;
 
-	lockdep_assert_held(&net->nft.commit_mutex);
+	lockdep_assert_held(&nft_net->commit_mutex);
 
 	table = nft_table_lookup(net, nla[NFTA_RULE_TABLE], family, genmask);
 	if (IS_ERR(table)) {
@@ -2743,7 +2779,7 @@ static int nf_tables_newrule(struct net
 	kvfree(info);
 	chain->use++;
 
-	if (net->nft.validate_state == NFT_VALIDATE_DO)
+	if (nft_net->validate_state == NFT_VALIDATE_DO)
 		return nft_table_validate(net, table);
 
 	return 0;
@@ -2765,10 +2801,11 @@ static struct nft_rule *nft_rule_lookup_
 					     const struct nft_chain *chain,
 					     const struct nlattr *nla)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	u32 id = ntohl(nla_get_be32(nla));
 	struct nft_trans *trans;
 
-	list_for_each_entry(trans, &net->nft.commit_list, list) {
+	list_for_each_entry(trans, &nft_net->commit_list, list) {
 		struct nft_rule *rule = nft_trans_rule(trans);
 
 		if (trans->msg_type == NFT_MSG_NEWRULE &&
@@ -2887,12 +2924,13 @@ nft_select_set_ops(const struct nft_ctx
 		   const struct nft_set_desc *desc,
 		   enum nft_set_policies policy)
 {
+	struct nftables_pernet *nft_net = net_generic(ctx->net, nf_tables_net_id);
 	const struct nft_set_ops *ops, *bops;
 	struct nft_set_estimate est, best;
 	const struct nft_set_type *type;
 	u32 flags = 0;
 
-	lockdep_assert_held(&ctx->net->nft.commit_mutex);
+	lockdep_assert_held(&nft_net->commit_mutex);
 	lockdep_nfnl_nft_mutex_not_held();
 #ifdef CONFIG_MODULES
 	if (list_empty(&nf_tables_set_types)) {
@@ -3038,10 +3076,11 @@ static struct nft_set *nft_set_lookup_by
 					   const struct nft_table *table,
 					   const struct nlattr *nla, u8 genmask)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	struct nft_trans *trans;
 	u32 id = ntohl(nla_get_be32(nla));
 
-	list_for_each_entry(trans, &net->nft.commit_list, list) {
+	list_for_each_entry(trans, &nft_net->commit_list, list) {
 		if (trans->msg_type == NFT_MSG_NEWSET) {
 			struct nft_set *set = nft_trans_set(trans);
 
@@ -3257,14 +3296,16 @@ static int nf_tables_dump_sets(struct sk
 	struct nft_table *table, *cur_table = (struct nft_table *)cb->args[2];
 	struct net *net = sock_net(skb->sk);
 	struct nft_ctx *ctx = cb->data, ctx_set;
+	struct nftables_pernet *nft_net;
 
 	if (cb->args[1])
 		return skb->len;
 
 	rcu_read_lock();
-	cb->seq = net->nft.base_seq;
+	nft_net = net_generic(net, nf_tables_net_id);
+	cb->seq = nft_net->base_seq;
 
-	list_for_each_entry_rcu(table, &net->nft.tables, list) {
+	list_for_each_entry_rcu(table, &nft_net->tables, list) {
 		if (ctx->family != NFPROTO_UNSPEC &&
 		    ctx->family != table->family)
 			continue;
@@ -3971,6 +4012,7 @@ static int nf_tables_dump_set(struct sk_
 {
 	struct nft_set_dump_ctx *dump_ctx = cb->data;
 	struct net *net = sock_net(skb->sk);
+	struct nftables_pernet *nft_net;
 	struct nft_table *table;
 	struct nft_set *set;
 	struct nft_set_dump_args args;
@@ -3981,7 +4023,8 @@ static int nf_tables_dump_set(struct sk_
 	int event;
 
 	rcu_read_lock();
-	list_for_each_entry_rcu(table, &net->nft.tables, list) {
+	nft_net = net_generic(net, nf_tables_net_id);
+	list_for_each_entry_rcu(table, &nft_net->tables, list) {
 		if (dump_ctx->ctx.family != NFPROTO_UNSPEC &&
 		    dump_ctx->ctx.family != table->family)
 			continue;
@@ -4571,7 +4614,7 @@ static int nft_add_set_elem(struct nft_c
 	}
 
 	nft_trans_elem(trans) = elem;
-	list_add_tail(&trans->list, &ctx->net->nft.commit_list);
+	nft_trans_commit_list_add_tail(ctx->net, trans);
 	return 0;
 
 err6:
@@ -4596,6 +4639,7 @@ static int nf_tables_newsetelem(struct n
 				const struct nlattr * const nla[],
 				struct netlink_ext_ack *extack)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	u8 genmask = nft_genmask_next(net);
 	const struct nlattr *attr;
 	struct nft_set *set;
@@ -4625,7 +4669,7 @@ static int nf_tables_newsetelem(struct n
 			return err;
 	}
 
-	if (net->nft.validate_state == NFT_VALIDATE_DO)
+	if (nft_net->validate_state == NFT_VALIDATE_DO)
 		return nft_table_validate(net, ctx.table);
 
 	return 0;
@@ -4738,7 +4782,7 @@ static int nft_del_setelem(struct nft_ct
 	nft_set_elem_deactivate(ctx->net, set, &elem);
 
 	nft_trans_elem(trans) = elem;
-	list_add_tail(&trans->list, &ctx->net->nft.commit_list);
+	nft_trans_commit_list_add_tail(ctx->net, trans);
 	return 0;
 
 fail_ops:
@@ -4772,7 +4816,7 @@ static int nft_flush_set(const struct nf
 	nft_set_elem_deactivate(ctx->net, set, elem);
 	nft_trans_elem_set(trans) = set;
 	nft_trans_elem(trans) = *elem;
-	list_add_tail(&trans->list, &ctx->net->nft.commit_list);
+	nft_trans_commit_list_add_tail(ctx->net, trans);
 
 	return 0;
 err1:
@@ -5151,6 +5195,7 @@ static int nf_tables_dump_obj(struct sk_
 	struct nft_obj_filter *filter = cb->data;
 	struct net *net = sock_net(skb->sk);
 	int family = nfmsg->nfgen_family;
+	struct nftables_pernet *nft_net;
 	struct nft_object *obj;
 	bool reset = false;
 
@@ -5158,9 +5203,10 @@ static int nf_tables_dump_obj(struct sk_
 		reset = true;
 
 	rcu_read_lock();
-	cb->seq = net->nft.base_seq;
+	nft_net = net_generic(net, nf_tables_net_id);
+	cb->seq = nft_net->base_seq;
 
-	list_for_each_entry_rcu(table, &net->nft.tables, list) {
+	list_for_each_entry_rcu(table, &nft_net->tables, list) {
 		if (family != NFPROTO_UNSPEC && family != table->family)
 			continue;
 
@@ -5826,12 +5872,14 @@ static int nf_tables_dump_flowtable(stru
 	struct net *net = sock_net(skb->sk);
 	int family = nfmsg->nfgen_family;
 	struct nft_flowtable *flowtable;
+	struct nftables_pernet *nft_net;
 	const struct nft_table *table;
 
 	rcu_read_lock();
-	cb->seq = net->nft.base_seq;
+	nft_net = net_generic(net, nf_tables_net_id);
+	cb->seq = nft_net->base_seq;
 
-	list_for_each_entry_rcu(table, &net->nft.tables, list) {
+	list_for_each_entry_rcu(table, &nft_net->tables, list) {
 		if (family != NFPROTO_UNSPEC && family != table->family)
 			continue;
 
@@ -6001,6 +6049,7 @@ static void nf_tables_flowtable_destroy(
 static int nf_tables_fill_gen_info(struct sk_buff *skb, struct net *net,
 				   u32 portid, u32 seq)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	struct nlmsghdr *nlh;
 	char buf[TASK_COMM_LEN];
 	int event = nfnl_msg_type(NFNL_SUBSYS_NFTABLES, NFT_MSG_NEWGEN);
@@ -6010,7 +6059,7 @@ static int nf_tables_fill_gen_info(struc
 	if (!nlh)
 		goto nla_put_failure;
 
-	if (nla_put_be32(skb, NFTA_GEN_ID, htonl(net->nft.base_seq)) ||
+	if (nla_put_be32(skb, NFTA_GEN_ID, htonl(nft_net->base_seq)) ||
 	    nla_put_be32(skb, NFTA_GEN_PROC_PID, htonl(task_pid_nr(current))) ||
 	    nla_put_string(skb, NFTA_GEN_PROC_NAME, get_task_comm(buf, current)))
 		goto nla_put_failure;
@@ -6043,6 +6092,7 @@ static int nf_tables_flowtable_event(str
 {
 	struct net_device *dev = netdev_notifier_info_to_dev(ptr);
 	struct nft_flowtable *flowtable;
+	struct nftables_pernet *nft_net;
 	struct nft_table *table;
 	struct net *net;
 
@@ -6050,13 +6100,14 @@ static int nf_tables_flowtable_event(str
 		return 0;
 
 	net = dev_net(dev);
-	mutex_lock(&net->nft.commit_mutex);
-	list_for_each_entry(table, &net->nft.tables, list) {
+	nft_net = net_generic(net, nf_tables_net_id);
+	mutex_lock(&nft_net->commit_mutex);
+	list_for_each_entry(table, &nft_net->tables, list) {
 		list_for_each_entry(flowtable, &table->flowtables, list) {
 			nft_flowtable_event(event, dev, flowtable);
 		}
 	}
-	mutex_unlock(&net->nft.commit_mutex);
+	mutex_unlock(&nft_net->commit_mutex);
 
 	return NOTIFY_DONE;
 }
@@ -6237,16 +6288,17 @@ static const struct nfnl_callback nf_tab
 
 static int nf_tables_validate(struct net *net)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	struct nft_table *table;
 
-	switch (net->nft.validate_state) {
+	switch (nft_net->validate_state) {
 	case NFT_VALIDATE_SKIP:
 		break;
 	case NFT_VALIDATE_NEED:
 		nft_validate_state_update(net, NFT_VALIDATE_DO);
 		/* fall through */
 	case NFT_VALIDATE_DO:
-		list_for_each_entry(table, &net->nft.tables, list) {
+		list_for_each_entry(table, &nft_net->tables, list) {
 			if (nft_table_validate(net, table) < 0)
 				return -EAGAIN;
 		}
@@ -6323,14 +6375,15 @@ static void nft_commit_release(struct nf
 
 static void nf_tables_commit_release(struct net *net)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	struct nft_trans *trans, *next;
 
-	if (list_empty(&net->nft.commit_list))
+	if (list_empty(&nft_net->commit_list))
 		return;
 
 	synchronize_rcu();
 
-	list_for_each_entry_safe(trans, next, &net->nft.commit_list, list) {
+	list_for_each_entry_safe(trans, next, &nft_net->commit_list, list) {
 		list_del(&trans->list);
 		nft_commit_release(trans);
 	}
@@ -6369,9 +6422,10 @@ static int nf_tables_commit_chain_prepar
 
 static void nf_tables_commit_chain_prepare_cancel(struct net *net)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	struct nft_trans *trans, *next;
 
-	list_for_each_entry_safe(trans, next, &net->nft.commit_list, list) {
+	list_for_each_entry_safe(trans, next, &nft_net->commit_list, list) {
 		struct nft_chain *chain = trans->ctx.chain;
 
 		if (trans->msg_type == NFT_MSG_NEWRULE ||
@@ -6463,6 +6517,7 @@ static void nft_chain_del(struct nft_cha
 
 static int nf_tables_commit(struct net *net, struct sk_buff *skb)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	struct nft_trans *trans, *next;
 	struct nft_trans_elem *te;
 	struct nft_chain *chain;
@@ -6473,7 +6528,7 @@ static int nf_tables_commit(struct net *
 		return -EAGAIN;
 
 	/* 1.  Allocate space for next generation rules_gen_X[] */
-	list_for_each_entry_safe(trans, next, &net->nft.commit_list, list) {
+	list_for_each_entry_safe(trans, next, &nft_net->commit_list, list) {
 		int ret;
 
 		if (trans->msg_type == NFT_MSG_NEWRULE ||
@@ -6489,7 +6544,7 @@ static int nf_tables_commit(struct net *
 	}
 
 	/* step 2.  Make rules_gen_X visible to packet path */
-	list_for_each_entry(table, &net->nft.tables, list) {
+	list_for_each_entry(table, &nft_net->tables, list) {
 		list_for_each_entry(chain, &table->chains, list)
 			nf_tables_commit_chain(net, chain);
 	}
@@ -6498,12 +6553,13 @@ static int nf_tables_commit(struct net *
 	 * Bump generation counter, invalidate any dump in progress.
 	 * Cannot fail after this point.
 	 */
-	while (++net->nft.base_seq == 0);
+	while (++nft_net->base_seq == 0)
+		;
 
 	/* step 3. Start new generation, rules_gen_X now in use. */
 	net->nft.gencursor = nft_gencursor_next(net);
 
-	list_for_each_entry_safe(trans, next, &net->nft.commit_list, list) {
+	list_for_each_entry_safe(trans, next, &nft_net->commit_list, list) {
 		switch (trans->msg_type) {
 		case NFT_MSG_NEWTABLE:
 			if (nft_trans_table_update(trans)) {
@@ -6624,7 +6680,7 @@ static int nf_tables_commit(struct net *
 
 	nf_tables_commit_release(net);
 	nf_tables_gen_notify(net, skb, NFT_MSG_NEWGEN);
-	mutex_unlock(&net->nft.commit_mutex);
+	mutex_unlock(&nft_net->commit_mutex);
 
 	return 0;
 }
@@ -6660,10 +6716,11 @@ static void nf_tables_abort_release(stru
 
 static int __nf_tables_abort(struct net *net)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	struct nft_trans *trans, *next;
 	struct nft_trans_elem *te;
 
-	list_for_each_entry_safe_reverse(trans, next, &net->nft.commit_list,
+	list_for_each_entry_safe_reverse(trans, next, &nft_net->commit_list,
 					 list) {
 		switch (trans->msg_type) {
 		case NFT_MSG_NEWTABLE:
@@ -6770,7 +6827,7 @@ static int __nf_tables_abort(struct net
 	synchronize_rcu();
 
 	list_for_each_entry_safe_reverse(trans, next,
-					 &net->nft.commit_list, list) {
+					 &nft_net->commit_list, list) {
 		list_del(&trans->list);
 		nf_tables_abort_release(trans);
 	}
@@ -6780,22 +6837,24 @@ static int __nf_tables_abort(struct net
 
 static int nf_tables_abort(struct net *net, struct sk_buff *skb)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	int ret = __nf_tables_abort(net);
 
-	mutex_unlock(&net->nft.commit_mutex);
+	mutex_unlock(&nft_net->commit_mutex);
 
 	return ret;
 }
 
 static bool nf_tables_valid_genid(struct net *net, u32 genid)
 {
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
 	bool genid_ok;
 
-	mutex_lock(&net->nft.commit_mutex);
+	mutex_lock(&nft_net->commit_mutex);
 
-	genid_ok = genid == 0 || net->nft.base_seq == genid;
+	genid_ok = genid == 0 || nft_net->base_seq == genid;
 	if (!genid_ok)
-		mutex_unlock(&net->nft.commit_mutex);
+		mutex_unlock(&nft_net->commit_mutex);
 
 	/* else, commit mutex has to be released by commit or abort function */
 	return genid_ok;
@@ -7353,10 +7412,9 @@ int __nft_release_basechain(struct nft_c
 }
 EXPORT_SYMBOL_GPL(__nft_release_basechain);
 
-static void __nft_release_tables(struct net *net)
+static void __nft_release_table(struct net *net, struct nft_table *table)
 {
 	struct nft_flowtable *flowtable, *nf;
-	struct nft_table *table, *nt;
 	struct nft_chain *chain, *nc;
 	struct nft_object *obj, *ne;
 	struct nft_rule *rule, *nr;
@@ -7366,71 +7424,84 @@ static void __nft_release_tables(struct
 		.family	= NFPROTO_NETDEV,
 	};
 
-	list_for_each_entry_safe(table, nt, &net->nft.tables, list) {
-		ctx.family = table->family;
+	ctx.family = table->family;
 
-		list_for_each_entry(chain, &table->chains, list)
-			nf_tables_unregister_hook(net, table, chain);
-		/* No packets are walking on these chains anymore. */
-		ctx.table = table;
-		list_for_each_entry(chain, &table->chains, list) {
-			ctx.chain = chain;
-			list_for_each_entry_safe(rule, nr, &chain->rules, list) {
-				list_del(&rule->list);
-				chain->use--;
-				nf_tables_rule_release(&ctx, rule);
-			}
-		}
-		list_for_each_entry_safe(flowtable, nf, &table->flowtables, list) {
-			list_del(&flowtable->list);
-			table->use--;
-			nf_tables_flowtable_destroy(flowtable);
-		}
-		list_for_each_entry_safe(set, ns, &table->sets, list) {
-			list_del(&set->list);
-			table->use--;
-			nft_set_destroy(set);
-		}
-		list_for_each_entry_safe(obj, ne, &table->objects, list) {
-			list_del(&obj->list);
-			table->use--;
-			nft_obj_destroy(&ctx, obj);
-		}
-		list_for_each_entry_safe(chain, nc, &table->chains, list) {
-			ctx.chain = chain;
-			nft_chain_del(chain);
-			table->use--;
-			nf_tables_chain_destroy(&ctx);
+	list_for_each_entry(chain, &table->chains, list)
+		nf_tables_unregister_hook(net, table, chain);
+	/* No packets are walking on these chains anymore. */
+	ctx.table = table;
+	list_for_each_entry(chain, &table->chains, list) {
+		ctx.chain = chain;
+		list_for_each_entry_safe(rule, nr, &chain->rules, list) {
+			list_del(&rule->list);
+			chain->use--;
+			nf_tables_rule_release(&ctx, rule);
 		}
-		list_del(&table->list);
-		nf_tables_table_destroy(&ctx);
 	}
+	list_for_each_entry_safe(flowtable, nf, &table->flowtables, list) {
+		list_del(&flowtable->list);
+		table->use--;
+		nf_tables_flowtable_destroy(flowtable);
+	}
+	list_for_each_entry_safe(set, ns, &table->sets, list) {
+		list_del(&set->list);
+		table->use--;
+		nft_set_destroy(set);
+	}
+	list_for_each_entry_safe(obj, ne, &table->objects, list) {
+		list_del(&obj->list);
+		table->use--;
+		nft_obj_destroy(&ctx, obj);
+	}
+	list_for_each_entry_safe(chain, nc, &table->chains, list) {
+		ctx.chain = chain;
+		nft_chain_del(chain);
+		table->use--;
+		nf_tables_chain_destroy(&ctx);
+	}
+	list_del(&table->list);
+	nf_tables_table_destroy(&ctx);
+}
+
+static void __nft_release_tables(struct net *net)
+{
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
+	struct nft_table *table, *nt;
+
+	list_for_each_entry_safe(table, nt, &nft_net->tables, list)
+		__nft_release_table(net, table);
 }
 
 static int __net_init nf_tables_init_net(struct net *net)
 {
-	INIT_LIST_HEAD(&net->nft.tables);
-	INIT_LIST_HEAD(&net->nft.commit_list);
-	mutex_init(&net->nft.commit_mutex);
-	net->nft.base_seq = 1;
-	net->nft.validate_state = NFT_VALIDATE_SKIP;
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
+
+	INIT_LIST_HEAD(&nft_net->tables);
+	INIT_LIST_HEAD(&nft_net->commit_list);
+	mutex_init(&nft_net->commit_mutex);
+	nft_net->base_seq = 1;
+	nft_net->validate_state = NFT_VALIDATE_SKIP;
 
 	return 0;
 }
 
 static void __net_exit nf_tables_exit_net(struct net *net)
 {
-	mutex_lock(&net->nft.commit_mutex);
-	if (!list_empty(&net->nft.commit_list))
+	struct nftables_pernet *nft_net = net_generic(net, nf_tables_net_id);
+
+	mutex_lock(&nft_net->commit_mutex);
+	if (!list_empty(&nft_net->commit_list))
 		__nf_tables_abort(net);
 	__nft_release_tables(net);
-	mutex_unlock(&net->nft.commit_mutex);
-	WARN_ON_ONCE(!list_empty(&net->nft.tables));
+	mutex_unlock(&nft_net->commit_mutex);
+	WARN_ON_ONCE(!list_empty(&nft_net->tables));
 }
 
 static struct pernet_operations nf_tables_net_ops = {
 	.init	= nf_tables_init_net,
 	.exit	= nf_tables_exit_net,
+	.id	= &nf_tables_net_id,
+	.size	= sizeof(struct nftables_pernet),
 };
 
 static int __init nf_tables_module_init(void)
--- a/net/netfilter/nft_chain_filter.c
+++ b/net/netfilter/nft_chain_filter.c
@@ -2,6 +2,7 @@
 #include <linux/kernel.h>
 #include <linux/netdevice.h>
 #include <net/net_namespace.h>
+#include <net/netns/generic.h>
 #include <net/netfilter/nf_tables.h>
 #include <linux/netfilter_ipv4.h>
 #include <linux/netfilter_ipv6.h>
@@ -10,6 +11,8 @@
 #include <net/netfilter/nf_tables_ipv4.h>
 #include <net/netfilter/nf_tables_ipv6.h>
 
+extern unsigned int nf_tables_net_id;
+
 #ifdef CONFIG_NF_TABLES_IPV4
 static unsigned int nft_do_chain_ipv4(void *priv,
 				      struct sk_buff *skb,
@@ -315,6 +318,7 @@ static int nf_tables_netdev_event(struct
 				  unsigned long event, void *ptr)
 {
 	struct net_device *dev = netdev_notifier_info_to_dev(ptr);
+	struct nftables_pernet *nft_net;
 	struct nft_table *table;
 	struct nft_chain *chain, *nr;
 	struct nft_ctx ctx = {
@@ -325,8 +329,9 @@ static int nf_tables_netdev_event(struct
 	    event != NETDEV_CHANGENAME)
 		return NOTIFY_DONE;
 
-	mutex_lock(&ctx.net->nft.commit_mutex);
-	list_for_each_entry(table, &ctx.net->nft.tables, list) {
+	nft_net = net_generic(ctx.net, nf_tables_net_id);
+	mutex_lock(&nft_net->commit_mutex);
+	list_for_each_entry(table, &nft_net->tables, list) {
 		if (table->family != NFPROTO_NETDEV)
 			continue;
 
@@ -340,7 +345,7 @@ static int nf_tables_netdev_event(struct
 			nft_netdev_event(event, dev, &ctx);
 		}
 	}
-	mutex_unlock(&ctx.net->nft.commit_mutex);
+	mutex_unlock(&nft_net->commit_mutex);
 
 	return NOTIFY_DONE;
 }
--- a/net/netfilter/nft_dynset.c
+++ b/net/netfilter/nft_dynset.c
@@ -15,6 +15,9 @@
 #include <linux/netfilter/nf_tables.h>
 #include <net/netfilter/nf_tables.h>
 #include <net/netfilter/nf_tables_core.h>
+#include <net/netns/generic.h>
+
+extern unsigned int nf_tables_net_id;
 
 struct nft_dynset {
 	struct nft_set			*set;
@@ -112,13 +115,14 @@ static int nft_dynset_init(const struct
 			   const struct nft_expr *expr,
 			   const struct nlattr * const tb[])
 {
+	struct nftables_pernet *nft_net = net_generic(ctx->net, nf_tables_net_id);
 	struct nft_dynset *priv = nft_expr_priv(expr);
 	u8 genmask = nft_genmask_next(ctx->net);
 	struct nft_set *set;
 	u64 timeout;
 	int err;
 
-	lockdep_assert_held(&ctx->net->nft.commit_mutex);
+	lockdep_assert_held(&nft_net->commit_mutex);
 
 	if (tb[NFTA_DYNSET_SET_NAME] == NULL ||
 	    tb[NFTA_DYNSET_OP] == NULL ||



  parent reply	other threads:[~2023-08-09 11:17 UTC|newest]

Thread overview: 335+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-09 10:37 [PATCH 4.19 000/323] 4.19.291-rc1 review Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 001/323] gfs2: Dont deref jdesc in evict Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 002/323] x86/smp: Use dedicated cache-line for mwait_play_dead() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 003/323] video: imsttfb: check for ioremap() failures Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 004/323] fbdev: imsttfb: Fix use after free bug in imsttfb_probe Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 005/323] drm/edid: Fix uninitialized variable in drm_cvt_modes() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 006/323] scripts/tags.sh: Resolve gtags empty index generation Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 007/323] drm/amdgpu: Validate VM ioctl flags Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 008/323] treewide: Remove uninitialized_var() usage Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 009/323] md/raid10: check slab-out-of-bounds in md_bitmap_get_counter Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 010/323] md/raid10: fix overflow of md/safe_mode_delay Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 011/323] md/raid10: fix wrong setting of max_corr_read_errors Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 012/323] md/raid10: fix io loss while replacement replace rdev Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 013/323] irqchip/jcore-aic: Kill use of irq_create_strict_mappings() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 014/323] irqchip/jcore-aic: Fix missing allocation of IRQ descriptors Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 015/323] clocksource/drivers: Unify the names to timer-* format Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 016/323] clocksource/drivers/cadence-ttc: Use ttc driver as platform driver Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 017/323] clocksource/drivers/cadence-ttc: Fix memory leak in ttc_timer_probe Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 018/323] PM: domains: fix integer overflow issues in genpd_parse_state() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 019/323] ARM: 9303/1: kprobes: avoid missing-declaration warnings Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 020/323] evm: Complete description of evm_inode_setattr() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 021/323] wifi: ath9k: fix AR9003 mac hardware hang check register offset calculation Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 022/323] wifi: ath9k: avoid referencing uninit memory in ath9k_wmi_ctrl_rx Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 023/323] samples/bpf: Fix buffer overflow in tcp_basertt Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 024/323] wifi: mwifiex: Fix the size of a memory allocation in mwifiex_ret_802_11_scan() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 025/323] nfc: constify several pointers to u8, char and sk_buff Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 026/323] nfc: llcp: fix possible use of uninitialized variable in nfc_llcp_send_connect() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 027/323] wifi: orinoco: Fix an error handling path in spectrum_cs_probe() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 028/323] wifi: orinoco: Fix an error handling path in orinoco_cs_probe() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 029/323] wifi: atmel: Fix an error handling path in atmel_probe() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 030/323] wl3501_cs: Fix a bunch of formatting issues related to function docs Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 031/323] wl3501_cs: Remove unnecessary NULL check Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 032/323] wl3501_cs: Fix misspelling and provide missing documentation Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 033/323] net: create netdev->dev_addr assignment helpers Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 034/323] wl3501_cs: use eth_hw_addr_set() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 035/323] wifi: wl3501_cs: Fix an error handling path in wl3501_probe() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 036/323] wifi: ray_cs: Utilize strnlen() in parse_addr() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 037/323] wifi: ray_cs: Drop useless status variable " Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 038/323] wifi: ray_cs: Fix an error handling path in ray_probe() Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 039/323] wifi: ath9k: dont allow to overwrite ENDPOINT0 attributes Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 040/323] wifi: rsi: Do not set MMC_PM_KEEP_POWER in shutdown Greg Kroah-Hartman
2023-08-09 10:37 ` [PATCH 4.19 041/323] watchdog/perf: define dummy watchdog_update_hrtimer_threshold() on correct config Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 042/323] watchdog/perf: more properly prevent false positives with turbo modes Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 043/323] kexec: fix a memory leak in crash_shrink_memory() Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 044/323] memstick r592: make memstick_debug_get_tpc_name() static Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 045/323] wifi: ath9k: Fix possible stall on ath9k_txq_list_has_key() Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 046/323] wifi: ath9k: convert msecs to jiffies where needed Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 047/323] netlink: fix potential deadlock in netlink_set_err() Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 048/323] netlink: do not hard code device address lenth in fdb dumps Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 049/323] gtp: Fix use-after-free in __gtp_encap_destroy() Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 050/323] lib/ts_bm: reset initial match offset for every block of text Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 051/323] netfilter: nf_conntrack_sip: fix the ct_sip_parse_numerical_param() return value Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 052/323] ipvlan: Fix return value of ipvlan_queue_xmit() Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 053/323] netlink: Add __sock_i_ino() for __netlink_diag_dump() Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 054/323] radeon: avoid double free in ci_dpm_init() Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 055/323] Input: drv260x - sleep between polling GO bit Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 056/323] ARM: dts: BCM5301X: Drop "clock-names" from the SPI node Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 057/323] Input: adxl34x - do not hardcode interrupt trigger type Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 058/323] drm/panel: simple: fix active size for Ampire AM-480272H3TMQW-T01H Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 059/323] ARM: ep93xx: fix missing-prototype warnings Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 060/323] ASoC: es8316: Increment max value for ALC Capture Target Volume control Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 061/323] soc/fsl/qe: fix usb.c build errors Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 062/323] IB/hfi1: Fix sdma.h tx->num_descs off-by-one errors Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 063/323] arm64: dts: renesas: ulcb-kf: Remove flow control for SCIF1 Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 064/323] fbdev: omapfb: lcd_mipid: Fix an error handling path in mipid_spi_probe() Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 065/323] drm/radeon: fix possible division-by-zero errors Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 066/323] ALSA: ac97: Fix possible NULL dereference in snd_ac97_mixer Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 067/323] scsi: 3w-xxxx: Add error handling for initialization failure in tw_probe() Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 068/323] PCI: Add pci_clear_master() stub for non-CONFIG_PCI Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 069/323] pinctrl: cherryview: Return correct value if pin in push-pull mode Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 070/323] perf dwarf-aux: Fix off-by-one in die_get_varname() Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 071/323] pinctrl: at91-pio4: check return value of devm_kasprintf() Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 072/323] hwrng: virtio - add an internal buffer Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 073/323] hwrng: virtio - dont wait on cleanup Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 074/323] hwrng: virtio - dont waste entropy Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 075/323] hwrng: virtio - always add a pending request Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 076/323] hwrng: virtio - Fix race on data_avail and actual data Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 077/323] crypto: nx - fix build warnings when DEBUG_FS is not enabled Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 078/323] modpost: fix section mismatch message for R_ARM_ABS32 Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 079/323] modpost: fix section mismatch message for R_ARM_{PC24,CALL,JUMP24} Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 080/323] ARCv2: entry: comments about hardware auto-save on taken interrupts Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 081/323] ARCv2: entry: push out the Z flag unclobber from common EXCEPTION_PROLOGUE Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 082/323] ARCv2: entry: avoid a branch Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 083/323] ARCv2: entry: rewrite to enable use of double load/stores LDD/STD Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 084/323] ARC: define ASM_NL and __ALIGN(_STR) outside #ifdef __ASSEMBLY__ guard Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 085/323] USB: serial: option: add LARA-R6 01B PIDs Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 086/323] block: change all __u32 annotations to __be32 in affs_hardblocks.h Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 087/323] w1: fix loop in w1_fini() Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 088/323] sh: j2: Use ioremap() to translate device tree address into kernel memory Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 089/323] media: usb: Check az6007_read() return value Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 090/323] media: videodev2.h: Fix struct v4l2_input tuner index comment Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 091/323] media: usb: siano: Fix warning due to null work_func_t function pointer Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 092/323] extcon: Fix kernel doc of property fields to avoid warnings Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 093/323] extcon: Fix kernel doc of property capability " Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 094/323] usb: phy: phy-tahvo: fix memory leak in tahvo_usb_probe() Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 095/323] mfd: rt5033: Drop rt5033-battery sub-device Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 096/323] KVM: s390: fix KVM_S390_GET_CMMA_BITS for GFNs in memslot holes Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 097/323] mfd: intel-lpss: Add missing check for platform_get_resource Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 098/323] mfd: stmpe: Only disable the regulators if they are enabled Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 099/323] rtc: st-lpc: Release some resources in st_rtc_probe() in case of error Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 100/323] sctp: fix potential deadlock on &net->sctp.addr_wq_lock Greg Kroah-Hartman
2023-08-09 10:38 ` [PATCH 4.19 101/323] Add MODULE_FIRMWARE() for FIRMWARE_TG357766 Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 102/323] spi: bcm-qspi: return error if neither hif_mspi nor mspi is available Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 103/323] mailbox: ti-msgmgr: Fill non-message tx data fields with 0x0 Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 104/323] f2fs: fix error path handling in truncate_dnode() Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 105/323] powerpc: allow PPC_EARLY_DEBUG_CPM only when SERIAL_CPM=y Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 106/323] net: bridge: keep ports without IFF_UNICAST_FLT in BR_PROMISC mode Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 107/323] tcp: annotate data races in __tcp_oow_rate_limited() Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 108/323] net/sched: act_pedit: Add size check for TCA_PEDIT_PARMS_EX Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 109/323] sh: dma: Fix DMA channel offset calculation Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 110/323] i2c: xiic: Defer xiic_wakeup() and __xiic_start_xfer() in xiic_process() Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 111/323] i2c: xiic: Dont try to handle more interrupt events after error Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 112/323] ALSA: jack: Fix mutex call in snd_jack_report() Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 113/323] NFSD: add encoding of op_recall flag for write delegation Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 114/323] mmc: core: disable TRIM on Kingston EMMC04G-M627 Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 115/323] mmc: core: disable TRIM on Micron MTFC4GACAJCN-1M Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 116/323] bcache: Remove unnecessary NULL point check in node allocations Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 117/323] integrity: Fix possible multiple allocation in integrity_inode_get() Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 118/323] jffs2: reduce stack usage in jffs2_build_xattr_subsystem() Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 119/323] btrfs: fix race when deleting quota root from the dirty cow roots list Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 120/323] ARM: orion5x: fix d2net gpio initialization Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 121/323] spi: spi-fsl-spi: remove always-true conditional in fsl_spi_do_one_msg Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 122/323] spi: spi-fsl-spi: relax message sanity checking a little Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 123/323] spi: spi-fsl-spi: allow changing bits_per_word while CS is still active Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 124/323] netfilter: nf_tables: fix nat hook table deletion Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 125/323] netfilter: nf_tables: add rescheduling points during loop detection walks Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 126/323] netfilter: nftables: add helper function to set the base sequence number Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 127/323] netfilter: add helper function to set up the nfnetlink header and use it Greg Kroah-Hartman
2023-08-09 10:39 ` Greg Kroah-Hartman [this message]
2023-08-09 10:39 ` [PATCH 4.19 129/323] netfilter: nf_tables: incorrect error path handling with NFT_MSG_NEWRULE Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 130/323] netfilter: nf_tables: add NFT_TRANS_PREPARE_ERROR to deal with bound set/chain Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 131/323] netfilter: nf_tables: reject unbound anonymous set before commit phase Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 132/323] netfilter: nf_tables: unbind non-anonymous set if rule construction fails Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 133/323] netfilter: nf_tables: fix scheduling-while-atomic splat Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 134/323] netfilter: conntrack: Avoid nf_ct_helper_hash uses after free Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 135/323] netfilter: nf_tables: prevent OOB access in nft_byteorder_eval Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 136/323] net: lan743x: Dont sleep in atomic context Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 137/323] workqueue: clean up WORK_* constant types, clarify masking Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 138/323] net: mvneta: fix txq_map in case of txq_number==1 Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 139/323] vrf: Increment Icmp6InMsgs on the original netdev Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 140/323] icmp6: Fix null-ptr-deref of ip6_null_entry->rt6i_idev in icmp6_dev() Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 141/323] udp6: fix udp6_ehashfn() typo Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 142/323] ntb: idt: Fix error handling in idt_pci_driver_init() Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 143/323] NTB: amd: Fix error handling in amd_ntb_pci_driver_init() Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 144/323] ntb: intel: Fix error handling in intel_ntb_pci_driver_init() Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 145/323] NTB: ntb_transport: fix possible memory leak while device_register() fails Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 146/323] NTB: ntb_tool: Add check for devm_kcalloc Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 147/323] ipv6/addrconf: fix a potential refcount underflow for idev Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 148/323] wifi: airo: avoid uninitialized warning in airo_get_rate() Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 149/323] net/sched: make psched_mtu() RTNL-less safe Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 150/323] pinctrl: amd: Fix mistake in handling clearing pins at startup Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 151/323] pinctrl: amd: Detect internal GPIO0 debounce handling Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 152/323] pinctrl: amd: Only use special debounce behavior for GPIO 0 Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 153/323] tpm: tpm_vtpm_proxy: fix a race condition in /dev/vtpmx creation Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 154/323] net: bcmgenet: Ensure MDIO unregistration has clocks enabled Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 155/323] SUNRPC: Fix UAF in svc_tcp_listen_data_ready() Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 156/323] perf intel-pt: Fix CYC timestamps after standalone CBR Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 157/323] ext4: fix wrong unit use in ext4_mb_clear_bb Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 158/323] ext4: only update i_reserved_data_blocks on successful block allocation Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 159/323] jfs: jfs_dmap: Validate db_l2nbperpage while mounting Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 160/323] PCI/PM: Avoid putting EloPOS E2/S2/H2 PCIe Ports in D3cold Greg Kroah-Hartman
2023-08-09 10:39 ` [PATCH 4.19 161/323] PCI: Add function 1 DMA alias quirk for Marvell 88SE9235 Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 162/323] PCI: qcom: Disable write access to read only registers for IP v2.3.3 Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 163/323] PCI: rockchip: Assert PCI Configuration Enable bit after probe Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 164/323] PCI: rockchip: Write PCI Device ID to correct register Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 165/323] PCI: rockchip: Add poll and timeout to wait for PHY PLLs to be locked Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 166/323] PCI: rockchip: Fix legacy IRQ generation for RK3399 PCIe endpoint core Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 167/323] PCI: rockchip: Use u32 variable to access 32-bit registers Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 168/323] misc: pci_endpoint_test: Free IRQs before removing the device Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 169/323] misc: pci_endpoint_test: Re-init completion for every test Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 170/323] md/raid0: add discard support for the original layout Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 171/323] fs: dlm: return positive pid value for F_GETLK Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 172/323] serial: atmel: dont enable IRQs prematurely Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 173/323] hwrng: imx-rngc - fix the timeout for init and self check Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 174/323] ceph: dont let check_caps skip sending responses for revoke msgs Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 175/323] meson saradc: fix clock divider mask length Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 176/323] Revert "8250: add support for ASIX devices with a FIFO bug" Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 177/323] tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() in case of error Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 178/323] tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() when iterating clk Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 179/323] ring-buffer: Fix deadloop issue on reading trace_pipe Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 180/323] xtensa: ISS: fix call to split_if_spec Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 181/323] scsi: qla2xxx: Wait for io return on terminate rport Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 182/323] scsi: qla2xxx: Fix potential NULL pointer dereference Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 183/323] scsi: qla2xxx: Check valid rport returned by fc_bsg_to_rport() Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 184/323] scsi: qla2xxx: Pointer may be dereferenced Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 185/323] drm/atomic: Fix potential use-after-free in nonblocking commits Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 186/323] tracing/histograms: Add histograms to hist_vars if they have referenced variables Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 187/323] perf probe: Add test for regression introduced by switch to die_get_decl_file() Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 188/323] fuse: revalidate: dont invalidate if interrupted Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 189/323] can: bcm: Fix UAF in bcm_proc_show() Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 190/323] ext4: correct inline offset when handling xattrs in inode body Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 191/323] debugobjects: Recheck debug_objects_enabled before reporting Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 192/323] nbd: Add the maximum limit of allocated index in nbd_dev_add Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 193/323] md: fix data corruption for raid456 when reshape restart while grow up Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 194/323] md/raid10: prevent soft lockup while flush writes Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 195/323] posix-timers: Ensure timer ID search-loop limit is valid Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 196/323] sched/fair: Dont balance task to its current running CPU Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 197/323] bpf: Address KCSAN report on bpf_lru_list Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 198/323] wifi: wext-core: Fix -Wstringop-overflow warning in ioctl_standard_iw_point() Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 199/323] wifi: iwlwifi: mvm: avoid baid size integer overflow Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 200/323] igb: Fix igb_down hung on surprise removal Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 201/323] spi: bcm63xx: fix max prepend length Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 202/323] fbdev: imxfb: warn about invalid left/right margin Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 203/323] pinctrl: amd: Use amd_pinconf_set() for all config options Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 204/323] net: ethernet: ti: cpsw_ale: Fix cpsw_ale_get_field()/cpsw_ale_set_field() Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 205/323] net:ipv6: check return value of pskb_trim() Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 206/323] Revert "tcp: avoid the lookup process failing to get sk in ehash table" Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 207/323] fbdev: au1200fb: Fix missing IRQ check in au1200fb_drv_probe Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 208/323] llc: Dont drop packet from non-root netns Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 209/323] netfilter: nf_tables: fix spurious set element insertion failure Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 210/323] netfilter: nf_tables: cant schedule in nft_chain_validate Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 211/323] net: Replace the limit of TCP_LINGER2 with TCP_FIN_TIMEOUT_MAX Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 212/323] tcp: annotate data-races around tp->linger2 Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 213/323] tcp: annotate data-races around rskq_defer_accept Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 214/323] tcp: annotate data-races around tp->notsent_lowat Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 215/323] tcp: annotate data-races around fastopenq.max_qlen Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 216/323] tracing/histograms: Return an error if we fail to add histogram to hist_vars list Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 217/323] gpio: tps68470: Make tps68470_gpio_output() always set the initial value Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 218/323] bcache: use MAX_CACHES_PER_SET instead of magic number 8 in __bch_bucket_alloc_set Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 219/323] bcache: remove int n from parameter list of bch_bucket_alloc_set() Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 220/323] bcache: Fix __bch_btree_node_alloc to make the failure behavior consistent Greg Kroah-Hartman
2023-08-09 10:40 ` [PATCH 4.19 221/323] btrfs: fix extent buffer leak after tree mod log failure at split_node() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 222/323] ext4: rename journal_dev to s_journal_dev inside ext4_sb_info Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 223/323] ext4: Fix reusing stale buffer heads from last failed mounting Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 224/323] PCI: Rework pcie_retrain_link() wait loop Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 225/323] PCI/ASPM: Return 0 or -ETIMEDOUT from pcie_retrain_link() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 226/323] PCI/ASPM: Factor out pcie_wait_for_retrain() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 227/323] PCI/ASPM: Avoid link retraining race Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 228/323] dlm: cleanup plock_op vs plock_xop Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 229/323] dlm: rearrange async condition return Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 230/323] fs: dlm: interrupt posix locks only when process is killed Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 231/323] ftrace: Add information on number of page groups allocated Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 232/323] ftrace: Check if pages were allocated before calling free_pages() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 233/323] ftrace: Store the order of pages allocated in ftrace_page Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 234/323] ftrace: Fix possible warning on checking all pages used in ftrace_process_locs() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 235/323] scsi: qla2xxx: Fix inconsistent format argument type in qla_os.c Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 236/323] scsi: qla2xxx: Array index may go out of bound Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 237/323] ext4: fix to check return value of freeze_bdev() in ext4_shutdown() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 238/323] i40e: Fix an NULL vs IS_ERR() bug for debugfs_create_dir() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 239/323] phy: hisilicon: Fix an out of bounds check in hisi_inno_phy_probe() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 240/323] ethernet: atheros: fix return value check in atl1e_tso_csum() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 241/323] ipv6 addrconf: fix bug where deleting a mngtmpaddr can create a new temporary address Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 242/323] tcp: Reduce chance of collisions in inet6_hashfn() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 243/323] bonding: reset bonds flags when down link is P2P device Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 244/323] team: reset teams " Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 245/323] platform/x86: msi-laptop: Fix rfkill out-of-sync on MSI Wind U100 Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 246/323] net/sched: mqprio: refactor nlattr parsing to a separate function Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 247/323] net/sched: mqprio: add extack to mqprio_parse_nlattr() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 248/323] net/sched: mqprio: Add length check for TCA_MQPRIO_{MAX/MIN}_RATE64 Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 249/323] benet: fix return value check in be_lancer_xmit_workarounds() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 250/323] RDMA/mlx4: Make check for invalid flags stricter Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 251/323] drm/msm: Fix IS_ERR_OR_NULL() vs NULL check in a5xx_submit_in_rb() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 252/323] ASoC: fsl_spdif: Silence output on stop Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 253/323] block: Fix a source code comment in include/uapi/linux/blkzoned.h Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 254/323] dm raid: fix missing reconfig_mutex unlock in raid_ctr() error paths Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 255/323] ata: pata_ns87415: mark ns87560_tf_read static Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 256/323] ring-buffer: Fix wrong stat of cpu_buffer->read Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 257/323] tracing: Fix warning in trace_buffered_event_disable() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 258/323] USB: serial: option: support Quectel EM060K_128 Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 259/323] USB: serial: option: add Quectel EC200A module support Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 260/323] USB: serial: simple: add Kaufmann RKS+CAN VCP Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 261/323] USB: serial: simple: sort driver entries Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 262/323] can: gs_usb: gs_can_close(): add missing set of CAN state to CAN_STATE_STOPPED Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 263/323] Revert "usb: dwc3: core: Enable AutoRetry feature in the controller" Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 264/323] usb: dwc3: pci: skip BYT GPIO lookup table for hardwired phy Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 265/323] usb: dwc3: dont reset device side if dwc3 was configured as host-only Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 266/323] usb: ohci-at91: Fix the unhandle interrupt when resume Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 267/323] USB: quirks: add quirk for Focusrite Scarlett Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 268/323] usb: xhci-mtk: set the dma max_seg_size Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 269/323] Documentation: security-bugs.rst: update preferences when dealing with the linux-distros group Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 270/323] Documentation: security-bugs.rst: clarify CVE handling Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 271/323] staging: ks7010: potential buffer overflow in ks_wlan_set_encode_ext() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 272/323] hwmon: (nct7802) Fix for temp6 (PECI1) processed even if PECI1 disabled Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 273/323] btrfs: check for commit error at btrfs_attach_transaction_barrier() Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 274/323] tpm_tis: Explicitly check for error code Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 275/323] irq-bcm6345-l1: Do not assume a fixed block to cpu mapping Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 276/323] serial: 8250_dw: split Synopsys DesignWare 8250 common functions Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 277/323] serial: 8250_dw: Preserve original value of DLF register Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 278/323] virtio-net: fix race between set queues and probe Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 279/323] s390/dasd: fix hanging device after quiesce/resume Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 280/323] ASoC: wm8904: Fill the cache for WM8904_ADC_TEST_0 register Greg Kroah-Hartman
2023-08-09 10:41 ` [PATCH 4.19 281/323] dm cache policy smq: ensure IO doesnt prevent cleaner policy progress Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 282/323] drm/client: Fix memory leak in drm_client_target_cloned Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 283/323] net/sched: cls_fw: Fix improper refcount update leads to use-after-free Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 284/323] net/sched: sch_qfq: account for stab overhead in qfq_enqueue Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 285/323] ASoC: cs42l51: fix driver to properly autoload with automatic module loading Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 286/323] net/sched: cls_u32: Fix reference counter leak leading to overflow Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 287/323] perf: Fix function pointer case Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 288/323] loop: Select I/O scheduler none from inside add_disk() Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 289/323] word-at-a-time: use the same return type for has_zero regardless of endianness Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 290/323] KVM: s390: fix sthyi error handling Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 291/323] net/mlx5e: fix return value check in mlx5e_ipsec_remove_trailer() Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 292/323] perf test uprobe_from_different_cu: Skip if there is no gcc Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 293/323] net: sched: cls_u32: Fix match key mis-addressing Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 294/323] net: add missing data-race annotations around sk->sk_peek_off Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 295/323] net: add missing data-race annotation for sk_ll_usec Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 296/323] net/sched: cls_u32: No longer copy tcf_result on update to avoid use-after-free Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 297/323] net/sched: cls_route: " Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 298/323] ip6mr: Fix skb_under_panic in ip6mr_cache_report() Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 299/323] tcp_metrics: fix addr_same() helper Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 300/323] tcp_metrics: annotate data-races around tm->tcpm_stamp Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 301/323] tcp_metrics: annotate data-races around tm->tcpm_lock Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 302/323] tcp_metrics: annotate data-races around tm->tcpm_vals[] Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 303/323] tcp_metrics: annotate data-races around tm->tcpm_net Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 304/323] tcp_metrics: fix data-race in tcpm_suck_dst() vs fastopen Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 305/323] scsi: zfcp: Defer fc_rport blocking until after ADISC response Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 306/323] libceph: fix potential hang in ceph_osdc_notify() Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 307/323] USB: zaurus: Add ID for A-300/B-500/C-700 Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 308/323] fs/sysv: Null check to prevent null-ptr-deref bug Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 309/323] Bluetooth: L2CAP: Fix use-after-free in l2cap_sock_ready_cb Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 310/323] net: usbnet: Fix WARNING in usbnet_start_xmit/usb_submit_urb Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 311/323] ext2: Drop fragment support Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 312/323] test_firmware: fix a memory leak with reqs buffer Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 313/323] test_firmware: return ENOMEM instead of ENOSPC on failed memory allocation Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 314/323] mtd: rawnand: omap_elm: Fix incorrect type in assignment Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 315/323] powerpc/mm/altmap: Fix altmap boundary check Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 316/323] PM / wakeirq: support enabling wake-up irq after runtime_suspend called Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 317/323] PM: sleep: wakeirq: fix wake irq arming Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 318/323] ARM: dts: imx6sll: Make ssi node name same as other platforms Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 319/323] ARM: dts: imx: add usb alias Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 320/323] ARM: dts: imx6sll: fixup of operating points Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 321/323] ARM: dts: nxp/imx6sll: fix wrong property name in usbphy node Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 322/323] drivers core: Use sysfs_emit and sysfs_emit_at for show(device *...) functions Greg Kroah-Hartman
2023-09-24 22:40   ` Ben Hutchings
2023-10-07 11:22     ` Greg Kroah-Hartman
2023-08-09 10:42 ` [PATCH 4.19 323/323] arm64: dts: stratix10: fix incorrect I2C property for SCL signal Greg Kroah-Hartman
2023-08-10  6:53 ` [PATCH 4.19 000/323] 4.19.291-rc1 review Thierry Reding
2023-08-10 13:55 ` Guenter Roeck
2023-08-10 14:24   ` Guenter Roeck
2023-08-11  9:29     ` Greg Kroah-Hartman
2023-08-11 14:51       ` Greg Kroah-Hartman
2023-08-10 16:00 ` Guenter Roeck
2023-08-10 19:28 ` Daniel Díaz
2023-08-10 19:36   ` Linus Torvalds
2023-08-10 19:59     ` Greg Kroah-Hartman

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=20230809103703.976696696@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=fw@strlen.de \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=pablo@netfilter.org \
    --cc=patches@lists.linux.dev \
    --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).