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: Thomas Graf <tgraf@suug.ch> Acked-by: Johannes Berg <johannes@sipsolutions.net> Acked-by: Daniel Borkmann <daniel@iogearbox.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f8da977989
commit
b15ca182ed
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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++;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user