Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b15ca182 authored by Thomas Graf's avatar Thomas Graf Committed by David S. Miller
Browse files

netlink: Add nla_memdup() to wrap kmemdup() use on nlattr



Wrap several common instances of:
	kmemdup(nla_data(attr), nla_len(attr), GFP_KERNEL);

Signed-off-by: default avatarThomas Graf <tgraf@suug.ch>
Acked-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f8da9779
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -1190,6 +1190,16 @@ static inline struct in6_addr nla_get_in6_addr(const struct nlattr *nla)
	return tmp;
	return tmp;
}
}


/**
 * nla_memdup - duplicate attribute memory (kmemdup)
 * @src: netlink attribute to duplicate from
 * @gfp: GFP mask
 */
static inline void *nla_memdup(const struct nlattr *src, gfp_t gfp)
{
	return kmemdup(nla_data(src), nla_len(src), gfp);
}

/**
/**
 * nla_nest_start - Start a new level of nested attributes
 * nla_nest_start - Start a new level of nested attributes
 * @skb: socket buffer to add attributes to
 * @skb: socket buffer to add attributes to
+1 −3
Original line number Original line Diff line number Diff line
@@ -226,9 +226,7 @@ static int tcf_bpf_init_from_efd(struct nlattr **tb, struct tcf_bpf_cfg *cfg)
		return PTR_ERR(fp);
		return PTR_ERR(fp);


	if (tb[TCA_ACT_BPF_NAME]) {
	if (tb[TCA_ACT_BPF_NAME]) {
		name = kmemdup(nla_data(tb[TCA_ACT_BPF_NAME]),
		name = nla_memdup(tb[TCA_ACT_BPF_NAME], GFP_KERNEL);
			       nla_len(tb[TCA_ACT_BPF_NAME]),
			       GFP_KERNEL);
		if (!name) {
		if (!name) {
			bpf_prog_put(fp);
			bpf_prog_put(fp);
			return -ENOMEM;
			return -ENOMEM;
+1 −3
Original line number Original line Diff line number Diff line
@@ -369,9 +369,7 @@ static int cls_bpf_prog_from_efd(struct nlattr **tb, struct cls_bpf_prog *prog,
		return PTR_ERR(fp);
		return PTR_ERR(fp);


	if (tb[TCA_BPF_NAME]) {
	if (tb[TCA_BPF_NAME]) {
		name = kmemdup(nla_data(tb[TCA_BPF_NAME]),
		name = nla_memdup(tb[TCA_BPF_NAME], GFP_KERNEL);
			       nla_len(tb[TCA_BPF_NAME]),
			       GFP_KERNEL);
		if (!name) {
		if (!name) {
			bpf_prog_put(fp);
			bpf_prog_put(fp);
			return -ENOMEM;
			return -ENOMEM;
+1 −2
Original line number Original line Diff line number Diff line
@@ -10625,8 +10625,7 @@ static int handle_nan_filter(struct nlattr *attr_filter,


	i = 0;
	i = 0;
	nla_for_each_nested(attr, attr_filter, rem) {
	nla_for_each_nested(attr, attr_filter, rem) {
		filter[i].filter = kmemdup(nla_data(attr), nla_len(attr),
		filter[i].filter = nla_memdup(attr, GFP_KERNEL);
					   GFP_KERNEL);
		filter[i].len = nla_len(attr);
		filter[i].len = nla_len(attr);
		i++;
		i++;
	}
	}