Commit 8ff95303 authored by Breno Leitao's avatar Breno Leitao Committed by Jakub Kicinski
Browse files

net: fib_rules: Use nlmsg_payload in fib_{new,del}rule()



Leverage the new nlmsg_payload() helper to avoid checking for message
size and then reading the nlmsg data.

Suggested-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: default avatarBreno Leitao <leitao@debian.org>
Reviewed-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250414-nlmsg-v2-10-3d90cb42c6af@debian.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 4c113c80
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -852,13 +852,14 @@ int fib_newrule(struct net *net, struct sk_buff *skb, struct nlmsghdr *nlh,
		struct netlink_ext_ack *extack, bool rtnl_held)
{
	struct fib_rule *rule = NULL, *r, *last = NULL;
	struct fib_rule_hdr *frh = nlmsg_data(nlh);
	int err = -EINVAL, unresolved = 0;
	struct fib_rules_ops *ops = NULL;
	struct nlattr *tb[FRA_MAX + 1];
	bool user_priority = false;
	struct fib_rule_hdr *frh;

	if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*frh))) {
	frh = nlmsg_payload(nlh, sizeof(*frh));
	if (!frh) {
		NL_SET_ERR_MSG(extack, "Invalid msg length");
		goto errout;
	}
@@ -980,13 +981,14 @@ int fib_delrule(struct net *net, struct sk_buff *skb, struct nlmsghdr *nlh,
		struct netlink_ext_ack *extack, bool rtnl_held)
{
	struct fib_rule *rule = NULL, *nlrule = NULL;
	struct fib_rule_hdr *frh = nlmsg_data(nlh);
	struct fib_rules_ops *ops = NULL;
	struct nlattr *tb[FRA_MAX+1];
	bool user_priority = false;
	struct fib_rule_hdr *frh;
	int err = -EINVAL;

	if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*frh))) {
	frh = nlmsg_payload(nlh, sizeof(*frh));
	if (!frh) {
		NL_SET_ERR_MSG(extack, "Invalid msg length");
		goto errout;
	}