nfp: flower: use struct_size() helper
Subsystems (3)
PATCH 1/1 nfp: flower: use struct_size() helper
One of the more common cases of allocation size calculations is finding the size of a structure that has a zero-sized array at the end, along with memory for some number of elements for that array. For example:
struct nfp_tun_active_tuns {
...
struct route_ip_info {
__be32 ipv4;
__be32 egress_port;
__be32 extra[2];
} tun_info[];
};Make use of the struct_size() helper instead of an open-coded version in order to avoid any potential type mistakes.
So, replace the following form:
sizeof(struct nfp_tun_active_tuns) + sizeof(struct route_ip_info) * count
with:
struct_size(payload, tun_info, count)
This code was detected with the help of Coccinelle.
--- drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c +1 -2
@@ -162,8 +162,7 @@ void nfp_tunnel_keep_alive(struct nfp_app *app, struct sk_buff *skb) } pay_len =nfp_flower_cmsg_get_data_len (skb); -if (pay_len !=sizeof (struct nfp_tun_active_tuns ) + -sizeof (struct route_ip_info ) * count) { +if (pay_len !=struct_size (payload, tun_info, count)) {nfp_flower_cmsg_warn (app,"Corruption in tunnel keep-alive message.\n" );return ; }
Signature · 1 line
2.21.0
Quoted 20 lines · Gustavo A. R. Silva
One of the more common cases of allocation size calculations is finding the size of a structure that has a zero-sized array at the end, along with memory for some number of elements for that array. For example:
struct nfp_tun_active_tuns { ... struct route_ip_info { __be32 ipv4; __be32 egress_port; __be32 extra[2]; } tun_info[]; };Make use of the
struct_size()helper instead of an open-coded version in order to avoid any potential type mistakes.So, replace the following form:
sizeof(struct nfp_tun_active_tuns)+sizeof(struct route_ip_info)* count
Quoted 7 lines
with:
struct_size(payload, tun_info, count)This code was detected with the help of Coccinelle.
Signed-off-by Gustavo A. R. Silva <[email protected]>
Thanks!
From: "Gustavo A. R. Silva" <[email protected]>
Date: Wed, 5 Jun 2019 15:38:27 -0500
Quoted 20 lines
One of the more common cases of allocation size calculations is finding the size of a structure that has a zero-sized array at the end, along with memory for some number of elements for that array. For example:
struct nfp_tun_active_tuns { ... struct route_ip_info { __be32 ipv4; __be32 egress_port; __be32 extra[2]; } tun_info[]; };Make use of the
struct_size()helper instead of an open-coded version in order to avoid any potential type mistakes.So, replace the following form:
sizeof(struct nfp_tun_active_tuns)+sizeof(struct route_ip_info)* count
Quoted 7 lines
with:
struct_size(payload, tun_info, count)This code was detected with the help of Coccinelle.
Signed-off-by Gustavo A. R. Silva <[email protected]>
Applied.