mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 07:44:21 +08:00
net: nexthop: Initialize all fields in dumped nexthops
[ Upstream commit6d745cd0e9
] struct nexthop_grp contains two reserved fields that are not initialized by nla_put_nh_group(), and carry garbage. This can be observed e.g. with strace (edited for clarity): # ip nexthop add id 1 dev lo # ip nexthop add id 101 group 1 # strace -e recvmsg ip nexthop get id 101 ... recvmsg(... [{nla_len=12, nla_type=NHA_GROUP}, [{id=1, weight=0, resvd1=0x69, resvd2=0x67}]] ...) = 52 The fields are reserved and therefore not currently used. But as they are, they leak kernel memory, and the fact they are not just zero complicates repurposing of the fields for new ends. Initialize the full structure. Fixes:430a049190
("nexthop: Add support for nexthop groups") Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
253405541b
commit
fd06cb4a5f
@ -201,9 +201,10 @@ static int nla_put_nh_group(struct sk_buff *skb, struct nh_group *nhg)
|
|||||||
|
|
||||||
p = nla_data(nla);
|
p = nla_data(nla);
|
||||||
for (i = 0; i < nhg->num_nh; ++i) {
|
for (i = 0; i < nhg->num_nh; ++i) {
|
||||||
p->id = nhg->nh_entries[i].nh->id;
|
*p++ = (struct nexthop_grp) {
|
||||||
p->weight = nhg->nh_entries[i].weight - 1;
|
.id = nhg->nh_entries[i].nh->id,
|
||||||
p += 1;
|
.weight = nhg->nh_entries[i].weight - 1,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user