mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 14:24:11 +08:00
nexthop: Only parse NHA_OP_FLAGS for get messages that require it
The attribute is parsed into 'op_flags' in nh_valid_get_del_req() which is called from the handlers of three message types: RTM_DELNEXTHOP, RTM_GETNEXTHOPBUCKET and RTM_GETNEXTHOP. The attribute is only used by the latter and rejected by the policies of the other two. Pass 'op_flags' as NULL from the handlers of the other two and only parse the attribute when the argument is not NULL. This is a preparation for a subsequent patch. Signed-off-by: Ido Schimmel <idosch@nvidia.com> Reviewed-by: David Ahern <dsahern@kernel.org> Link: https://lore.kernel.org/r/20240311162307.545385-2-idosch@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
5f20e6ab1f
commit
dc5e0141ff
@ -3230,10 +3230,12 @@ static int nh_valid_get_del_req(const struct nlmsghdr *nlh,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (tb[NHA_OP_FLAGS])
|
||||
*op_flags = nla_get_u32(tb[NHA_OP_FLAGS]);
|
||||
else
|
||||
*op_flags = 0;
|
||||
if (op_flags) {
|
||||
if (tb[NHA_OP_FLAGS])
|
||||
*op_flags = nla_get_u32(tb[NHA_OP_FLAGS]);
|
||||
else
|
||||
*op_flags = 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -3250,7 +3252,6 @@ static int rtm_del_nexthop(struct sk_buff *skb, struct nlmsghdr *nlh,
|
||||
.portid = NETLINK_CB(skb).portid,
|
||||
};
|
||||
struct nexthop *nh;
|
||||
u32 op_flags;
|
||||
int err;
|
||||
u32 id;
|
||||
|
||||
@ -3259,7 +3260,7 @@ static int rtm_del_nexthop(struct sk_buff *skb, struct nlmsghdr *nlh,
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
err = nh_valid_get_del_req(nlh, tb, &id, &op_flags, extack);
|
||||
err = nh_valid_get_del_req(nlh, tb, &id, NULL, extack);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@ -3716,7 +3717,6 @@ static int nh_valid_get_bucket_req(const struct nlmsghdr *nlh,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct nlattr *tb[NHA_MAX + 1];
|
||||
u32 op_flags;
|
||||
int err;
|
||||
|
||||
err = nlmsg_parse(nlh, sizeof(struct nhmsg), tb, NHA_MAX,
|
||||
@ -3724,7 +3724,7 @@ static int nh_valid_get_bucket_req(const struct nlmsghdr *nlh,
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
err = nh_valid_get_del_req(nlh, tb, id, &op_flags, extack);
|
||||
err = nh_valid_get_del_req(nlh, tb, id, NULL, extack);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user