On 12/08/2024 16:11, Joshua Lant wrote:
On morello architecture, use of kernel pointers in the uapi structures is not permitted, due to different alignment requirements. Modify these to be unsigned longs.
Signed-off-by: Joshua Lant joshualant@gmail.com
include/uapi/linux/netfilter/xt_connlimit.h | 3 ++- net/netfilter/xt_connlimit.c | 8 ++++---- 2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/include/uapi/linux/netfilter/xt_connlimit.h b/include/uapi/linux/netfilter/xt_connlimit.h index d4d1943dcd11..db6b67d95c94 100644 --- a/include/uapi/linux/netfilter/xt_connlimit.h +++ b/include/uapi/linux/netfilter/xt_connlimit.h @@ -27,7 +27,8 @@ struct xt_connlimit_info { __u32 flags; /* Used internally by the kernel */
- struct nf_conncount_data *data __attribute__((aligned(8)));
- /* Corresponds to the struct nf_conncount_data **/
Nit: always a space before the closing */ (hard to read otherwise).
Kevin
- unsigned long data __attribute__((aligned(8)));
}; #endif /* _XT_CONNLIMIT_H */ diff --git a/net/netfilter/xt_connlimit.c b/net/netfilter/xt_connlimit.c index 5d04ef80a61d..4c0a71b47b66 100644 --- a/net/netfilter/xt_connlimit.c +++ b/net/netfilter/xt_connlimit.c @@ -69,7 +69,7 @@ connlimit_mt(const struct sk_buff *skb, struct xt_action_param *par) key[1] = zone->id; }
- connections = nf_conncount_count(net, info->data, key, tuple_ptr,
- connections = nf_conncount_count(net, (struct nf_conncount_data*) info->data, key, tuple_ptr, zone); if (connections == 0) /* kmalloc failed, drop it entirely */
@@ -94,16 +94,16 @@ static int connlimit_mt_check(const struct xt_mtchk_param *par) keylen += sizeof(struct in_addr); /* init private data */
- info->data = nf_conncount_init(par->net, par->family, keylen);
- info->data = (unsigned long) nf_conncount_init(par->net, par->family, keylen);
- return PTR_ERR_OR_ZERO(info->data);
- return PTR_ERR_OR_ZERO((struct nf_conncount_data*) info->data);
} static void connlimit_mt_destroy(const struct xt_mtdtor_param *par) { const struct xt_connlimit_info *info = par->matchinfo;
- nf_conncount_destroy(par->net, par->family, info->data);
- nf_conncount_destroy(par->net, par->family, (struct nf_conncount_data*) info->data);
} static struct xt_match connlimit_mt_reg __read_mostly = {