Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f6e5594 authored by Marcelo Leitner's avatar Marcelo Leitner Committed by Sasha Levin
Browse files

netfilter: nf_log: Introduce nft_log_dereference() macro



[ Upstream commit 0c26ed1c07f13ca27e2638ffdd1951013ed96c48 ]

Wrap up a common call pattern in an easier to handle call.

Signed-off-by: default avatarMarcelo Ricardo Leitner <mleitner@redhat.com>
Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
parent 98a38395
Loading
Loading
Loading
Loading
+9 −12
Original line number Original line Diff line number Diff line
@@ -19,6 +19,9 @@
static struct nf_logger __rcu *loggers[NFPROTO_NUMPROTO][NF_LOG_TYPE_MAX] __read_mostly;
static struct nf_logger __rcu *loggers[NFPROTO_NUMPROTO][NF_LOG_TYPE_MAX] __read_mostly;
static DEFINE_MUTEX(nf_log_mutex);
static DEFINE_MUTEX(nf_log_mutex);


#define nft_log_dereference(logger) \
	rcu_dereference_protected(logger, lockdep_is_held(&nf_log_mutex))

static struct nf_logger *__find_logger(int pf, const char *str_logger)
static struct nf_logger *__find_logger(int pf, const char *str_logger)
{
{
	struct nf_logger *log;
	struct nf_logger *log;
@@ -28,8 +31,7 @@ static struct nf_logger *__find_logger(int pf, const char *str_logger)
		if (loggers[pf][i] == NULL)
		if (loggers[pf][i] == NULL)
			continue;
			continue;


		log = rcu_dereference_protected(loggers[pf][i],
		log = nft_log_dereference(loggers[pf][i]);
						lockdep_is_held(&nf_log_mutex));
		if (!strncasecmp(str_logger, log->name, strlen(log->name)))
		if (!strncasecmp(str_logger, log->name, strlen(log->name)))
			return log;
			return log;
	}
	}
@@ -45,8 +47,7 @@ void nf_log_set(struct net *net, u_int8_t pf, const struct nf_logger *logger)
		return;
		return;


	mutex_lock(&nf_log_mutex);
	mutex_lock(&nf_log_mutex);
	log = rcu_dereference_protected(net->nf.nf_loggers[pf],
	log = nft_log_dereference(net->nf.nf_loggers[pf]);
					lockdep_is_held(&nf_log_mutex));
	if (log == NULL)
	if (log == NULL)
		rcu_assign_pointer(net->nf.nf_loggers[pf], logger);
		rcu_assign_pointer(net->nf.nf_loggers[pf], logger);


@@ -61,8 +62,7 @@ void nf_log_unset(struct net *net, const struct nf_logger *logger)


	mutex_lock(&nf_log_mutex);
	mutex_lock(&nf_log_mutex);
	for (i = 0; i < NFPROTO_NUMPROTO; i++) {
	for (i = 0; i < NFPROTO_NUMPROTO; i++) {
		log = rcu_dereference_protected(net->nf.nf_loggers[i],
		log = nft_log_dereference(net->nf.nf_loggers[i]);
				lockdep_is_held(&nf_log_mutex));
		if (log == logger)
		if (log == logger)
			RCU_INIT_POINTER(net->nf.nf_loggers[i], NULL);
			RCU_INIT_POINTER(net->nf.nf_loggers[i], NULL);
	}
	}
@@ -298,8 +298,7 @@ static int seq_show(struct seq_file *s, void *v)
	int i, ret;
	int i, ret;
	struct net *net = seq_file_net(s);
	struct net *net = seq_file_net(s);


	logger = rcu_dereference_protected(net->nf.nf_loggers[*pos],
	logger = nft_log_dereference(net->nf.nf_loggers[*pos]);
					   lockdep_is_held(&nf_log_mutex));


	if (!logger)
	if (!logger)
		ret = seq_printf(s, "%2lld NONE (", *pos);
		ret = seq_printf(s, "%2lld NONE (", *pos);
@@ -313,8 +312,7 @@ static int seq_show(struct seq_file *s, void *v)
		if (loggers[*pos][i] == NULL)
		if (loggers[*pos][i] == NULL)
			continue;
			continue;


		logger = rcu_dereference_protected(loggers[*pos][i],
		logger = nft_log_dereference(loggers[*pos][i]);
					   lockdep_is_held(&nf_log_mutex));
		ret = seq_printf(s, "%s", logger->name);
		ret = seq_printf(s, "%s", logger->name);
		if (ret < 0)
		if (ret < 0)
			return ret;
			return ret;
@@ -386,8 +384,7 @@ static int nf_log_proc_dostring(struct ctl_table *table, int write,
		mutex_unlock(&nf_log_mutex);
		mutex_unlock(&nf_log_mutex);
	} else {
	} else {
		mutex_lock(&nf_log_mutex);
		mutex_lock(&nf_log_mutex);
		logger = rcu_dereference_protected(net->nf.nf_loggers[tindex],
		logger = nft_log_dereference(net->nf.nf_loggers[tindex]);
						   lockdep_is_held(&nf_log_mutex));
		if (!logger)
		if (!logger)
			table->data = "NONE";
			table->data = "NONE";
		else
		else