diff options
author | Gustavo A. R. Silva <gustavo@embeddedor.com> | 2019-02-07 18:58:56 -0600 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-02-08 22:57:27 -0800 |
commit | 4154b567b6d15a03cc9ac6c263c261da99b1ba32 (patch) | |
tree | 9b6b1ea3999d72569dba535bdf30cb490571f23a /net/bridge/br_multicast.c | |
parent | 6f0282bfe397d35ff2903f010c70f309abf92bc7 (diff) | |
download | linux-4154b567b6d15a03cc9ac6c263c261da99b1ba32.tar.gz linux-4154b567b6d15a03cc9ac6c263c261da99b1ba32.tar.bz2 linux-4154b567b6d15a03cc9ac6c263c261da99b1ba32.zip |
bridge: 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 foo {
int stuff;
struct boo entry[];
};
size = sizeof(struct foo) + count * sizeof(struct boo);
instance = alloc(size, GFP_KERNEL)
Instead of leaving these open-coded and prone to type mistakes, we can
now use the new struct_size() helper:
size = struct_size(instance, entry, count);
This code was detected with the help of Coccinelle.
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge/br_multicast.c')
-rw-r--r-- | net/bridge/br_multicast.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index 1fb885a33c66..4a048fd1cbea 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -1018,8 +1018,7 @@ static int br_ip6_multicast_mld2_report(struct net_bridge *br, if (!nsrcs) return -EINVAL; - grec_len = sizeof(*grec) + - sizeof(struct in6_addr) * ntohs(*nsrcs); + grec_len = struct_size(grec, grec_src, ntohs(*nsrcs)); if (!ipv6_mc_may_pull(skb, len + grec_len)) return -EINVAL; |