|
@@ -127,8 +127,12 @@ int netlink_send(struct sock *sock, int group, u16 type, void *msg, int len)
|
|
}
|
|
}
|
|
|
|
|
|
seq++;
|
|
seq++;
|
|
- nlh = NLMSG_PUT(skb, 0, seq, type, len);
|
|
|
|
- memcpy(NLMSG_DATA(nlh), msg, len);
|
|
|
|
|
|
+ nlh = nlmsg_put(skb, 0, seq, type, len, 0);
|
|
|
|
+ if (!nlh) {
|
|
|
|
+ kfree_skb(skb);
|
|
|
|
+ return -EMSGSIZE;
|
|
|
|
+ }
|
|
|
|
+ memcpy(nlmsg_data(nlh), msg, len);
|
|
|
|
|
|
NETLINK_CB(skb).pid = 0;
|
|
NETLINK_CB(skb).pid = 0;
|
|
NETLINK_CB(skb).dst_group = 0;
|
|
NETLINK_CB(skb).dst_group = 0;
|
|
@@ -144,7 +148,5 @@ int netlink_send(struct sock *sock, int group, u16 type, void *msg, int len)
|
|
}
|
|
}
|
|
ret = 0;
|
|
ret = 0;
|
|
}
|
|
}
|
|
-
|
|
|
|
-nlmsg_failure:
|
|
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|