diff options
author | Ido Schimmel <idosch@nvidia.com> | 2020-08-26 19:48:51 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-08-27 02:00:51 +0300 |
commit | d7d49dc77c8db113393a31aced3f0562f4afd439 (patch) | |
tree | 2958bcbc5c645f138d841e624b66122f056b6900 /net/ipv4 | |
parent | 751e42515efbe00cf8fe8c8bb160a207364dbb2b (diff) | |
download | linux-d7d49dc77c8db113393a31aced3f0562f4afd439.tar.xz |
ipv4: nexthop: Reduce allocation size of 'struct nh_group'
The struct looks as follows:
struct nh_group {
struct nh_group *spare; /* spare group for removals */
u16 num_nh;
bool mpath;
bool fdb_nh;
bool has_v4;
struct nh_grp_entry nh_entries[];
};
But its offset within 'struct nexthop' is also taken into account to
determine the allocation size.
Instead, use struct_size() to allocate only the required number of
bytes.
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/nexthop.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/net/ipv4/nexthop.c b/net/ipv4/nexthop.c index 134e92382275..d13730ff9aeb 100644 --- a/net/ipv4/nexthop.c +++ b/net/ipv4/nexthop.c @@ -133,12 +133,9 @@ static struct nexthop *nexthop_alloc(void) static struct nh_group *nexthop_grp_alloc(u16 num_nh) { - size_t sz = offsetof(struct nexthop, nh_grp) - + sizeof(struct nh_group) - + sizeof(struct nh_grp_entry) * num_nh; struct nh_group *nhg; - nhg = kzalloc(sz, GFP_KERNEL); + nhg = kzalloc(struct_size(nhg, nh_entries, num_nh), GFP_KERNEL); if (nhg) nhg->num_nh = num_nh; |