diff options
Diffstat (limited to 'net/tipc/netlink_compat.c')
| -rw-r--r-- | net/tipc/netlink_compat.c | 12 | 
1 files changed, 11 insertions, 1 deletions
diff --git a/net/tipc/netlink_compat.c b/net/tipc/netlink_compat.c index 217516357ef2..90e3c70a91ad 100644 --- a/net/tipc/netlink_compat.c +++ b/net/tipc/netlink_compat.c @@ -275,8 +275,9 @@ err_out:  static int tipc_nl_compat_dumpit(struct tipc_nl_compat_cmd_dump *cmd,  				 struct tipc_nl_compat_msg *msg)  { -	int err; +	struct nlmsghdr *nlh;  	struct sk_buff *arg; +	int err;  	if (msg->req_type && (!msg->req_size ||  			      !TLV_CHECK_TYPE(msg->req, msg->req_type))) @@ -305,6 +306,15 @@ static int tipc_nl_compat_dumpit(struct tipc_nl_compat_cmd_dump *cmd,  		return -ENOMEM;  	} +	nlh = nlmsg_put(arg, 0, 0, tipc_genl_family.id, 0, NLM_F_MULTI); +	if (!nlh) { +		kfree_skb(arg); +		kfree_skb(msg->rep); +		msg->rep = NULL; +		return -EMSGSIZE; +	} +	nlmsg_end(arg, nlh); +  	err = __tipc_nl_compat_dumpit(cmd, msg, arg);  	if (err) {  		kfree_skb(msg->rep);  | 
