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

Commit b9c04ae7 authored by Pablo Neira Ayuso's avatar Pablo Neira Ayuso
Browse files

netfilter: nf_tables: add nft_expr_type_request_module()



This helper function makes sure the family specific extension is loaded.

Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
parent 2a3a93ef
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -2019,6 +2019,19 @@ static const struct nft_expr_type *__nft_expr_type_get(u8 family,
	return NULL;
}

#ifdef CONFIG_MODULES
static int nft_expr_type_request_module(struct net *net, u8 family,
					struct nlattr *nla)
{
	nft_request_module(net, "nft-expr-%u-%.*s", family,
			   nla_len(nla), (char *)nla_data(nla));
	if (__nft_expr_type_get(family, nla))
		return -EAGAIN;

	return 0;
}
#endif

static const struct nft_expr_type *nft_expr_type_get(struct net *net,
						     u8 family,
						     struct nlattr *nla)
@@ -2035,9 +2048,7 @@ static const struct nft_expr_type *nft_expr_type_get(struct net *net,
	lockdep_nfnl_nft_mutex_not_held();
#ifdef CONFIG_MODULES
	if (type == NULL) {
		nft_request_module(net, "nft-expr-%u-%.*s", family,
				   nla_len(nla), (char *)nla_data(nla));
		if (__nft_expr_type_get(family, nla))
		if (nft_expr_type_request_module(net, family, nla) == -EAGAIN)
			return ERR_PTR(-EAGAIN);

		nft_request_module(net, "nft-expr-%.*s",